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: