Problème incrémentation variable

zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   -  
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je ne comprends pas pourquoi ma variable est bien incrémentée à chaque boucle mais à la sortie elle est remise à 0.
Voici le code:

cat nombre_trie.txt | while read line
do
let compteur+=1
echo $compteur --> donne 1, 2, 3, 4, etc ... donc là c'est bon
done
echo $compteur --> donne 0 !!!

J'ai essayé toutes les formes d'incrémentation que j'ai trouvé mais c'est pareil à la sortie la variable est remise à 0.
Merci pour vos réponses.

2 réponses

Utilisateur anonyme
 
salut,

le pipe crée un sous-shell.
c'est comme de définir une variable entre parenthèses
$> (var=foo; echo "$var")
foo
$> echo "$var"
$>
la variable n'existe pas en dehors du shell où elle est créée.
c'est pareil pour un script : les variables qui y sont créées n'existent pas dans l'environnement parent qui exécute le script.
0
zatox Messages postés 640 Date d'inscription   Statut Membre Dernière intervention   66
 
Bonjour, ah oui !!!!!! merci beaucoup pour ton aide, je suis pas très bon pour ne pas dire mauvais, donc suite à ton indication j'ai fait ceci:

compteur=0
while read ligne
do
compteur=$(($compteur +1))
done < nombre_trie.txt
echo $compteur

Et là ça marche.
Encore merci.
0