Shell et portée des variables et invocation de fonction via $()
Bonjour,
J'ai un fonctionnement bizarre selon que j'appelle directement une fonction ou que je l'invoque via $()
voici le code d'exemple
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| $ cat ./kipu.sh
#!/bin/sh
x="Z"
f()
{
x="${x}Z"
echo "$1$x"
}
# affiche AZZ (normal)
f "A"
# affiche AZZZ (normal)
f "A"
v=$(f "A")
echo $v
# affiche AZZZZ (normal)
v=$(f "A")
echo $v
# affiche AZZZZ ! on attendrait AZZZZZ |
et il produit l'affichage
Code:
1 2 3 4 5
| $ ./kipu.sh
AZZ
AZZZ
AZZZZ
AZZZZ |
Sur le dernier affichage, je devrais avoir 5 'Z' => AZZZZZ
on dirait que la variable x de f() est local (que la valeur de x est perdue lors du retour de f())
Quelqu'un aurait une explication ?
Merci
[résolu] Shell et portée des variables et invocation de fonction via $()
ok, je ne savais pas que $() invoquait un sous-shell
le "man bash" n'est pas explicite à ce sujet (ou je n'ai pas vu l'info)
merci pour l'info