Problème de modification de variable dans une boucle
Bonjour,
J'ai un sushi avec KSH et la modification d'une variable (un incrément) dans une boucle while (certes, un peu spéciale...) :
1. Mon incrément possède une certaine valeur à l'entrée de la boucle, disons 10
2. Je fait une boucle "cat fichier | while read VARIABLE" qui modifie la valeur de l'incrément. Lorsque j'affiche la valeur de la variable, tout se passe bient : 11, 12, 13...[/list]
3. En sortie de boucle, je réaffiche la valeur de ma variable : je trouve 10
J'imagine que c'est parce que le cat ... | while lance un processus-fils et que du coup, la modification n'est pas remontée au processus parent.
Connaissez-vous un moyen de conserver la valeur modifier ? Je travaille sur un Linux RHAS 2.1.
Voici un petit code d'exemple (le fichier foo contient 4 lignes) :
Code:
1 2 3 4 5 6 7 8 9 10
| #!/bin/ksh
INCREMENT=10
echo "Debut : $INCREMENT"
cat foo | while read LINE
do
export INCREMENT=$((INCREMENT + 1))
echo $INCREMENT
done
echo "FIN : $INCREMENT" |
La sortie est la suivante :
Code:
1 2 3 4 5 6
| Debut : 10
11
12
13
14
FIN : 10 |