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

[HS] Comportement bizarre de bash

2 réponses
Avatar
Bonjour à tous.

Je fais :

toto@debian$ {count=10; echo $count}
10
toto@debian$ echo $count
10
toto@debian$ {count=12; echo $count}
12
toto@debian$ echo $count
12
toto@debian$ {count=9; echo $count}|less
9
toto@debian$ echo $count
12
toto@debian$ {count=9; echo $count}|xargs echo
9
toto@debian$ echo $count
12

Étonnant, non ?

Du coup, si vous êtes amenés à faire des calculs
qui utilisent une variable et un xargs,
ceux ci peuvent être faux, sans que vous
compreniez vraiment pourquoi.

Comme par exemple, la ligne suivante :
(C'est une seule ligne)

{ count=0; for I in wget-log*; do if grep -qi
"forbidden\|sauvegardé\|rien à faire" $I; then echo -n; else
count=$(expr $count + 1); echo; echo $I; tail $I; fi; done; echo; echo
"total = " $count; }|grep KB|cut -d\% -f2|cut -d\K -f1|xargs -n 1
printf "+ %s "|xargs -d'\n' printf "(0 %s) / $count"|xargs -d'\n'
echo|bc -l

Si vous avez déjà rencontré ce comportement,
et / ou si vous en connaissez l'explication,
je serais ravi de bénéficier de vos lunières
et commentaires.

FA










___________________________________________________________________________
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions !
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses
http://fr.answers.yahoo.com


--
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

2 réponses

Avatar
fra-duf-no-spam
Le 13672ième jour après Epoch, fully associative-debian écri vait:

Bonjour à tous.

Je fais :

$ {count; echo $count}
10
$ echo $count
10
$ {count; echo $count}
12
$ echo $count
12
$ {count=9; echo $count}|less
9
$ echo $count
12
$ {count=9; echo $count}|xargs echo
9
$ echo $count
12



Eh bien, tu en fais des choses :)

Ce qui est bien, c'est qu'avec tes tests tu as tous les moyens de
comprendre tout ce qu'il se passe.

Étonnant, non ?



Pas tant que ça en fait. En gros, dans tous les cas que tu testes sans
le pipe, le shell ne va pas créer un nouveau process, les variables
vont donc faire partie du shell interactif.

Par contre, dès lors que tu vas devoir lui faire manipuler les entrà ©es
sorties (en gros), alors le shell va créer un process pour pouvoir en
changer les std*.

À toi pour de nouveaux tests et de nouvelles expériences :)

--
La vraie science est philosophique.
-+- Max Born (1882-1970) -+-
Avatar
Vincent Lefevre
On 2007-06-09 00:08:43 +0200, François TOURDE wrote:
Pas tant que ça en fait. En gros, dans tous les cas que tu testes
sans le pipe, le shell ne va pas créer un nouveau process, les
variables vont donc faire partie du shell interactif.



À noter que zsh a un comportement différent, peut-être moins intuitif,
mais plus pratique (c'est une FAQ).

--
Vincent Lefèvre - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


--
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