Je n'arrive pas à comprendre un comportement en ksh. Voici le code suivant :

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
23
24
25
26
 
# définition de i a 0
typeset -i i=0
while [[ $i -ne 2 ]]
do 
    echo $i
    # modification de i
    i=$i+1
done
 
# en dehors de la boucle, i a été modifié et la valeur est bien 2
echo $i
 
touch toto.txt
echo "99" > toto.txt
 
# ici par contre, je modifie i
cat toto.txt |while read PROCPID
do
   # ici par contre, je modifie i
    i=4
done
 
echo $i
 
# m'affiche toujours 2....
Pourquoi la valeur que je modifie dans la seconde boucle est illisible en dehors alors que la première l'est ?