MAIS ! Cela ne fonctionne plus si la sortie de la boucle est à son tour 'pipée' dans une commande :
Là, je sèche... :-/
Alors, je crois que j'ai la réponse. Prenons ce bout de code :
while foo-bar; dovar=blabla
done |grep toto
Si je comprends bien POSIX dit explicitement (à la fin du chapitre) qu'un sous-shell doit être utilisé dans ce cas :
Additionally, each command of a multi-command pipeline is in a subshell environment; [...]
En fait, la commande while foo-bar; do blabla; done est une commande composée (multi-command), et en plus le résultat est pipé, donc ça rentre dans cette définition.
Donc il n'est pas possible de récupérer la valeur de '${var}' en dehors de la boucle while.
Donc, si tu veux récupérer sa valeur, tu devras faire un truc du genre :
[^] # Re: Mais pourquoi est-il aussi méchant ?
Posté par ymorin . En réponse au message zenity : processus père/fils, fifo,.... Évalué à 1.
Alors, je crois que j'ai la réponse. Prenons ce bout de code :
Si je comprends bien POSIX dit explicitement (à la fin du chapitre) qu'un sous-shell doit être utilisé dans ce cas :
En fait, la commande while foo-bar; do blabla; done est une commande composée (multi-command), et en plus le résultat est pipé, donc ça rentre dans cette définition.
Donc il n'est pas possible de récupérer la valeur de '${var}' en dehors de la boucle while.
Donc, si tu veux récupérer sa valeur, tu devras faire un truc du genre :
C'est crade, mais ça marche... :-(
Hop,
Moi.