[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Script bash 2



ced a écrit, lundi 17 avril 2006, à 17:57 :
> Bonjour, moi aussi j'ai un petit soucis avec un script :
> 
> #! /bin/sh
> 
> i=0
> cat "/etc/passwd" | while read ligne ; do
>      i=$((i + 1))
> done
> echo $i
> 
> Voila, il est cencé compter les ligne du fichier /etc/passwd, mais quand 
> je l'éxécute, il me retourne systématiquement 0.
> Si vous voyez pourquoi ca marche po ca serait le top.

La  boucle  do  s'exécute  dans  un sous-shell,  qui  peut  hériter  des
variables, mais pas les renvoyer au shell père : (bash)

 $ i=100;while read ligne;do echo $((++i));done </etc/passwd|tail -1;echo $i
139
100

Le cat est inutile, et la solution la plus courte est

 wc -l /etc/passwd

Pour une collection  de manières plus ou moins  loufoques de compter les
lignes, voir par exemple les archives récentes de <news:fr.comp.os.unix>
sur le sujet « Cession Re: Cessation de franconews »...

> Merci et bonne journée

de rien,
-- 
Jacques L'helgoualc'h



Reply to: