Bonjour.
En voulant faire un script où j'avais besoin de mémoriser le nombre de fichiers contenu dans un dossier, je suis arrivé à une "bizarrerie" : LET n'accepte pas les substitutions de commandes avec $(...)
Le code exemple :
J'exécute mon shell (dans un dossier où il y a deux fichiers) et j'ai le résultat suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #!/bin/ksh echo 'Sur la variable UNE : avec let et $(...)' typeset -i UNE=0 let UNE=$(ls | wc -l) echo "Elle vaut : ${UNE}" echo 'Sur la variable DEUX : avec ((...))' typeset -i DEUX=0 ((DEUX=$(ls | wc -l))) echo "Elle vaut : ${DEUX}" echo 'Sur la variable TROIS : a linitialisation' typeset -i TROIS=$(ls | wc -l) echo "Elle vaut : ${TROIS}" echo 'Sur la variable QUATRE : `...` ' typeset -i QUATRE=0 QUATRE=`ls | wc -l` echo "Elle vaut : ${QUATRE}"
Je n'arrive pas à expliquer pourquoi la variable UNE ne vaut pas 2 en sortie... Seule explication : let n'accepte pas les substitutions avec $(commande). Mais pourquoi ?Sur la variable UNE : avec let et $(...)
Elle vaut : 0
Sur la variable DEUX : avec ((...))
Elle vaut : 2
Sur la variable TROIS : a linitialisation
Elle vaut : 2
Sur la variable QUATRE : `...`
Elle vaut : 2
En tapant man let, je n'ai rien eu des très concret :
Ce que j'ai mis en gras dans le man sous-entend-il qu'on ne peut avoir des "vraies" variables et des nombres en dur dans une expression avec let ?NAME
let - shell built-in function to evaluate one or more arith-
metic expressions
SYNOPSIS
ksh
let arg...
DESCRIPTION
ksh
Each arg is a separate "arithmetic expression" to be
evaluated.
EXIT STATUS
The following exit values are returned:
0 The value of the last expression is non-zero.
1 The value of the last expression is zero.
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Availability | SUNWcsu |
|_____________________________|_____________________________|
SEE ALSO
ksh(1), set(1), typeset(1), attributes(5)
SunOS 5.10 Last change: 15 Apr 1994
Merci d'avance de vos réponses
PS : j'ai testé sous SUN8, même résultat.
Partager