lire l’entrée du clavier dans une boucle de lecture en pipeline

Dans un script, je voudrais lire une sortie de processus ligne par ligne et obtenir une confirmation de l’utilisateur. Jusqu’ici j’ai fait ceci:

mycommand-outputpiped | while (read line) do read line #dostuff read confirm #oops -> this read the next item from the pipe, not the keyboard done 

J’ai donc essayé d’append:

 read confirm < /dev/stdin 

Mais cela n’a pas changé la chose, il lit toujours la ligne suivante du tuyau … Comment dois-je gérer cela?

Les deux commandes de lecture sont read partir du stream d’entrée standard hérité de la boucle while. Ce qui suit devrait fonctionner; votre seconde lecture doit lire directement depuis le terminal, pas /dev/stdin (qui est le tube).

 mycommand-outputpiped | while read line do # do stuff read confirm < /dev/tty done 

Notez qu'il n'y en a qu'une read , dans la condition while , et qu'elle ne soit pas entre parenthèses (ce qui créerait un sous-shell, et line ne serait disponible que dans ce sous-shell, pas dans le corps de la boucle).