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 : 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
et il produit l'affichage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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