Bonjour à tous,
je rencontre un problème de substitution de commandes. J'ai plusieurs variables nommées j1, j2, j3, j4 ...
J'ai une variable nommée n et grâce à n je voudrais déréférencer j1, j2, ... jn. Pour faire ça, j'utilise la commande eval. Exemple:
Donc ça marche. Maintenant je voudrais stocker la résultat de cette commande dans la variable J. Je fais donc:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ j1=toto $ n=1 $ eval echo \$j${n} toto
Et là je ne comprends pas pourquoi j'ai 1 dans J alors que j'ai bien toto dans stdout !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ J=`eval echo \$j${n}` $ echo $J 1
Maintenant en utilisant $ ça marche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ eval echo \$j${n} > /tmp/toot $ cat /tmp/toot toto
Quelqu'un peut il m'expliquer:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ J=$(eval echo \$j${n}) $ echo $J toto
- la différence entre $() et ``
- pourquoi ça ne marche pas avec ``
Merci !
Laurent
Edit: ortho
Partager