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
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.
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
25 mars 2015 à 01:53
salut,
le pipe crée un sous-shell.
c'est comme de définir une variable entre parenthèses
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.
le pipe crée un sous-shell.
c'est comme de définir une variable entre parenthèses
$> (var=foo; echo "$var")la variable n'existe pas en dehors du shell où elle est créée.
foo
$> echo "$var"
$>
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.
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
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.
compteur=0
while read ligne
do
compteur=$(($compteur +1))
done < nombre_trie.txt
echo $compteur
Et là ça marche.
Encore merci.