Problème avec la substitution de commandes
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:
Code:
1 2 3 4
| $ j1=toto
$ n=1
$ eval echo \$j${n}
toto |
Donc ça marche. Maintenant je voudrais stocker la résultat de cette commande dans la variable J. Je fais donc:
Code:
1 2 3
| $ J=`eval echo \$j${n}`
$ echo $J
1 |
Et là je ne comprends pas pourquoi j'ai 1 dans J alors que j'ai bien toto dans stdout !
Code:
1 2 3
| $ eval echo \$j${n} > /tmp/toot
$ cat /tmp/toot
toto |
Maintenant en utilisant $ ça marche:
Code:
1 2 3
| $ J=$(eval echo \$j${n})
$ echo $J
toto |
Quelqu'un peut il m'expliquer:
- la différence entre $() et ``
- pourquoi ça ne marche pas avec ``
Merci !
Laurent
Edit: ortho