Bonjour,
J'ai un fonctionnement bizarre selon que j'appelle directement une fonction ou que je l'invoque via $()
voici le code d'exemple
et il produit l'affichage
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
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
Sur le dernier affichage, je devrais avoir 5 'Z' => AZZZZZ
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5$ ./kipu.sh AZZ AZZZ AZZZZ AZZZZ
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
Partager