Problème incrémentation variable

Fermé
zatox Messages postés 640 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 26 juin 2020 - 25 mars 2015 à 00:59
zatox Messages postés 640 Date d'inscription samedi 17 février 2007 Statut Membre Dernière intervention 26 juin 2020 - 25 mars 2015 à 09:41
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
25 mars 2015 à 01:53
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 samedi 17 février 2007 Statut Membre Dernière intervention 26 juin 2020 66
25 mars 2015 à 09:41
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