Bash] Boucle while - export variable

Bash] Boucle while - export variable - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 14-02-2007 à 11:56:42    

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 :)

Reply

Marsh Posté le 14-02-2007 à 11:56:42   

Reply

Marsh Posté le 14-02-2007 à 14:28:54    

Problème vicieux du "cat | while read"....

 

En fait tu bosses dans le subshell lancé par ta "lecture de pipe", ta variable est modifiée dans ce subshell mais pas dans ton shell courant.
C'est un peu comme si tu faisais un (TOTO=42; cmd1 && cmd2) > plop.txt, le subshell qui lance cmd1 && cmd2 voit dans son environnement TOTO=42, mais dans ton shell courant il n'y a jamais eu de TOTO...

 

Si tu veux compter le nombre de lignes, utilise plutôt wc (man wc)


Message édité par Xavier_OM le 14-02-2007 à 14:30:41

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed