--- François TOURDE <[EMAIL PROTECTED]> a écrit :

> Le 13672ième jour après Epoch, fully associative-debian écrivait:
> 
> > Bonjour à tous.
> >
> > Je fais :
> >
> > [EMAIL PROTECTED] {count=10; echo $count}
> > 10
> > [EMAIL PROTECTED] echo $count
> > 10
> > [EMAIL PROTECTED] {count=12; echo $count}
> > 12
> > [EMAIL PROTECTED] echo $count
> > 12
> > [EMAIL PROTECTED] {count=9; echo $count}|less
> > 9
> > [EMAIL PROTECTED] echo $count
> > 12
> > [EMAIL PROTECTED] {count=9; echo $count}|xargs echo
> > 9
> > [EMAIL PROTECTED] 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*.

D'accord, je n'avais jamais remarqué...
Voilà ce que dit `man bash' à ce sujet :
<<
Conduites
Une  conduite  (pipeline)  est une suite d’une ou plusieurs
commandes séparées par le caractère tube |.
[...]
[Dans une conduite] Chaque commande dans une conduite est
exécutée comme  un  processus  indépendant  (c’est-à-dire
dans un sous-interpréteur).
>>

Donc, d'un point de vue pratique, pas facile de mélanger
les pipes et les xargs avec l'utilisation de variables ?
Un flot de données, mais aussi quelques données qui sont
accessibles n'importe où.

$ I=5; { I=4 ; export I; echo $I; }|xargs printf "$I ; %d\n"
5 ; 4

(le export ne donne rien, donc le preocessus 'après' le pipe
n'est pas un sous processus du premier.)

Vu qu'on ne peut pas utiliser de variable, les pipes sont,
peut être, parfois trop limités.
Cet incident m'a permis d'en savoir plus...
On peut par exemple faire ce genre de chose.

$ mkfifo tm1; mkfifo tmp2; { I=4 ; echo $I; echo toto; }|tee tmp1\
|tee tmp2>/dev/null & \
cat tmp1|grep '[0-9]'>>tmp2 & \
cat tmp2

Là ça pourrait se faire avec un sed, mais il y a peut être des
cas où ça pourrait être utile.

FA.

> À toi pour de nouveaux tests et de nouvelles expériences :)
> 
> -- 
> La vraie science est philosophique.
>       -+- Max Born (1882-1970) -+-
> 
> 





      
        
                
___________________________________________________________________________ 
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 [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Répondre à