Vincent Lefevre a écrit :
On 2007-08-07 17:13:01 +0200, Daniel Caillibaud wrote:
Vincent Lefevre a écrit :
C'est peut-être parce que le processus n'a pas un stdin attaché au terminal ou un truc du genre, auquel cas le comportement peut varier d'un éditeur à un autre. Oui, mais je comprend pas trop pourquoi ça réagit différemment entre
while read f; do #commandes#; done<fichier et for f in `cat fichier`; do #commandes#; done;
Comme je l'ai dit, il peut y avoir un problème quand le processus n'a pas un stdin attaché au terminal (ce qui se produit avec la première ligne). Par exemple:
Mais pourquoi le for "propage" le stdin vers les commandes de la boucle et pas le while ? Ce sont deux "shell keyword"... je comprend pas pourquoi ça réagit différemment.
vin% cat file foo.c vin% while read f; do emacs -nw $f; done < file emacs: standard input is not a tty vin%
Essaie plutôt un truc du style:
while read f; do emacs -nw $f < $TTY; done < file
$ while read f; do joe $f <$TTY ; done <fichiers.list -bash: $TTY: ambiguous redirect -bash: $TTY: ambiguous redirect ..
ou
while read f <&3; do emacs -nw $f; done 3< file
while read f<&3; do joe $f; done 3<fichiers.list marche comme attendu (idem for). Merci Vincent, j'aurai pas trouvé ça tout seul ;-) -- Daniel