#1 Le 14/02/2007, à 11:58
- paul@gloomoot
[Bash] Boucle while - export variable
Bonjour,
J'ai une question... quand j'exécute le script suivant :
#!/bin/bash
I=-1;
cat file.txt | while read REF_LINE
do
{
let I++;
}
done
echo "I = "$I;
J=-1;
while [ $J -lt 100 ]
do
{
let J++;
}
done
echo "J = "$J;
j'obtiens l'affichage :
I = -1
J = 100
Pourquoi la variable I n'est elle pas exportée hors de la boucle?
Et surtout, comment faire pour récupérer sa valeur?
Merci d'avance de votre aide
http://leblogdepaul.free.fr
Hors ligne
#2 Le 14/02/2007, à 12:36
- any
Re : [Bash] Boucle while - export variable
hum comme ca ca devrait marcher
I=-1
while read ligne
do
{
let I++;
}
done < file.txt
echo "I = "$I;
#3 Le 14/02/2007, à 13:25
- paul@gloomoot
Re : [Bash] Boucle while - export variable
Woohoo \o/
Merci beaucoup! Ca marche !
T'as une idée de pourquoi ça me fait cette erreur?
http://leblogdepaul.free.fr
Hors ligne
#4 Le 14/02/2007, à 13:55
- paul@gloomoot
Re : [Bash] Boucle while - export variable
Une explication qu'on m'a donné sur linuxfr :
Lorsque tu fais "cat file | commande", en interne bash forke un sous-shell, avec tout son environnement, pour "commande" et le connecte au pipe.
Dans ton cas, tout ce qui est fait par le "while..." est dans ce sous-shell, y compris l'incrémentation de la variable. Mais l'environnement du sous-shell n'est pas retransmis au père à la fin ! Quand tu lis cette variable plus loin dans ton script, elle a toujours sa valeur d'avant le fork. C'est une "autre" variable en somme.
Voilà pour ceux que ça intéresse.
Merci encore
http://leblogdepaul.free.fr
Hors ligne