Problème incrémentation variable

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

  1. 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.
    1. 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.