Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
portée des variables en bash
Envoyé par: IvyAlice

Bonjour à tous,
Voici mon petit soucis du moment, j'ai une partie de scripte ou je compte le nombre de lignes dans un fichier, mais c'est pour tester le résultat après la boucle while et il me sort une valeur de 0 en dehors de cette dernière
  nbrActivite=0
  cat /home/alice/activite|
  while read k
  do
    nbrActivite=$((nbrActivite+1))
    echo "--> il y a $nbrActivite"
    echo $nbrActivite > /home/alice/nbrActivite
  done
  # nombres de lignes dans /home/alice/activite
  cat /home/alice/nbrActivite
  echo "il y a $nbrActivite activite"
ça me donne le résultat suivant :
--> il y a 1
--> il y a 2
--> il y a 3
--> il y a 4
--> il y a 5
--> il y a 6
--> il y a 7
--> il y a 8
8
il y a 0 activite
la valeur est juste si je la copie dans un fichier et la récupère après (mais ce n'est pas pratique du tout) et pas si j'affiche la variable, qui pourtant dans le while m'affiche les valeurs correcte.
ça m'étonne fort qu'on ne puisse pas réutiliser la valeur de nbrActivite après le while.
M'y suis-je mal pris (genre erreur de syntaxe)? ou est-ce que la portée de cette variable se limite au while ?

Merci d'avance pour votre aide

Ivy

Poste le Monday 13 July 2009 15:55:13
Répondre     Citer    
Re: portée des variables en bash
Envoyé par: NBaH

C'est dû au pipe : il s'exécute dans un sous-shell, et par conséquent, le shell courant (celui dans lequel s'exécute ton script n'a pas connaissance de la variable qui y est affectée).
Essaie :
while read ligne
  do
    nbrActivite=$((++nbrActivite))
    echo "ligne n° $nbrActivite : $ligne"
  done < /home/alice/activite
  # nombres de lignes dans /home/alice/activite
  echo "il y a $nbrActivite activite(s)"

Poste le Monday 13 July 2009 17:23:54
Répondre     Citer    
Re: portée des variables en bash
Envoyé par: IvyAlice

Salut NBaH,

Ah oui donc de cette manière il n'y a plus de pipe et je peux conserver la valeur après la boucle.
Super, ça fonctionne !

Merci beaucoup

Ivy

Poste le Tuesday 14 July 2009 08:46:27
Répondre     Citer    
Re: portée des variables en bash
Envoyé par: twocats

C'est aussi possible d'utiliser
wc -l lefichier
ou avec une recherche de motif :
grep -c motif lefichier

-------------------
La réponse est 42

Poste le Saturday 25 July 2009 14:20:26
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
portée des variables en bash
Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons