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 -- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:" To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

