[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [HS] Comportement bizarre de bash



fully_associative-debian@yahoo.fr wrote:

[snip]
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.)

effectivement, il y a 2 frères. c'est plus clair si tu fais ça:

$ grep foo bar | sed 's/a/b/g'

tu vois bien que grep ne peut pas forker un sed. donc il n'est pas son père.


Vu qu'on ne peut pas utiliser de variable, les pipes sont,
peut être, parfois trop limités.

un exemple de "problèmes":

liste=
grep -v "^#" fichier.txt | while read a b c; do
   liste="$liste $a"
done
echo $liste

la, ça ne marche pas, car liste est modifié dans le fils.

dans ce genre de cas, on peut théoriquement toujours résoudre le problème en utilisant des fichiers temporaires.

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.



Reply to: