Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Script bash 2

7 réponses
Avatar
ced
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.

Merci et bonne journée

Ced


--
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 debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

7 réponses

Avatar
Florent Bayle
--nextPart1488354.J7ORyEOWPi
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

Le Lundi 17 Avril 2006 17:57, ced a écrit :
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.



i=`wc -l /etc/passwd | cut -f1 -d" "`
echo $i

--
Florent

--nextPart1488354.J7ORyEOWPi
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQBEQ8GiM+Ix3/RCm3gRAt1tAJ9SiSevrDiHznt1LQ46BJIV6loK6gCgshBB
XNm3Q6n+SIuQhQHAhYsA1fQ =vnax
-----END PGP SIGNATURE-----

--nextPart1488354.J7ORyEOWPi--


--
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
with a subject of "unsubscribe". Trouble? Contact
Avatar
Stéphane RIGOULOT
Essaies çà :

#! /bin/sh

i=0
cat "/etc/passwd" | while read ligne ; do
i=($i + 1)
done
echo $i



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.

Merci et bonne journée

Ced


--
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
with a subject of "unsubscribe". Trouble? Contact




--
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
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
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)

$ i0;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
with a subject of "unsubscribe". Trouble? Contact
Avatar
ced
Merci pour vos réponses,

le script que j'ai mis dans mon mail est juste un script qui montre le
truc que je comprend pas, le but n'est pas de compter des lignes.

D'ailleur il y a toujours un truc que je comprend pas :

mon script marche pas :

#! /bin/sh

i=0
cat "/etc/passwd" | while read ligne ; do
i=$((i + 1))
done
echo $i


Mais celui la marche :

#! /bin/sh

n
i=1
f=1
while [ $i -le $n ] ; do
f=$((f * i))
i=$((i + 1))
done
echo "$n! = $f"

Jacques L'helgoualc'h a écrit :



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)




Dans ce cas, il semble bien que le shell pere accede a la variable $f.

Merci

ced






--
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
with a subject of "unsubscribe". Trouble? Contact
Avatar
ced
Désolé, je crois que je viens de comprendre, c'est a cause du "|" ?

Merci pour vos réponses encore une fois
et bonne soirée.

ced a écrit :

Merci pour vos réponses,

le script que j'ai mis dans mon mail est juste un script qui montre le
truc que je comprend pas, le but n'est pas de compter des lignes.

D'ailleur il y a toujours un truc que je comprend pas :

mon script marche pas :

#! /bin/sh

i=0
cat "/etc/passwd" | while read ligne ; do
i=$((i + 1))
done
echo $i


Mais celui la marche :

#! /bin/sh

n
i=1
f=1
while [ $i -le $n ] ; do
f=$((f * i))
i=$((i + 1))
done
echo "$n! = $f"

Jacques L'helgoualc'h a écrit :



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)




Dans ce cas, il semble bien que le shell pere accede a la variable $f.

Merci

ced










--
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
with a subject of "unsubscribe". Trouble? Contact
Avatar
Jacques L'helgoualc'h
ced a écrit, lundi 17 avril 2006, à 18:45 :
[...]
Mais celui la marche :

#! /bin/sh

n
i=1
f=1
while [ $i -le $n ] ; do
f=$((f * i))
i=$((i + 1))
done
echo "$n! = $f"



C'est la faute du pipe, en fait :

$ f=1;i=1;echo|while [ "$i" -le "$n" ]; do f=$((f * i)); i=$((i + 1)); done;echo "$f $i"
1 1
$ f=1;i=1;while [ "$i" -le "$n" ]; do f=$((f * i)); i=$((i + 1)); done;echo "$f $i"
3628800 11

--
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
with a subject of "unsubscribe". Trouble? Contact
Avatar
ced
Ok super

Merci beaucoup

ced

Jacques L'helgoualc'h a écrit :

ced a écrit, lundi 17 avril 2006, à 18:45 :
[...]


Mais celui la marche :

#! /bin/sh

n
i=1
f=1
while [ $i -le $n ] ; do
f=$((f * i))
i=$((i + 1))
done
echo "$n! = $f"





C'est la faute du pipe, en fait :

$ f=1;i=1;echo|while [ "$i" -le "$n" ]; do f=$((f * i)); i=$((i + 1)); done;echo "$f $i"
1 1
$ f=1;i=1;while [ "$i" -le "$n" ]; do f=$((f * i)); i=$((i + 1)); done;echo "$f $i"
3628800 11







--
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
with a subject of "unsubscribe". Trouble? Contact