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) :
La sortie est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Debut : 10 11 12 13 14 FIN : 10
Partager