Esta resposta mostra várias maneiras de transmitir vários comandos para outro comando, mas como eles usam subshells que você não pode fazer stdin.
Enquanto você pode conseguir isso com pipes nomeados, é um pouco feio e pode deixar os processos que sobram depois:
$ mkfifo p
$ while :; do sleep 5s; echo save; done > p &
$ cat p > output &
$ cat </dev/stdin > p
test
asdf
woot
^C
$ cat output
save
test
asdf
save
save
woot
save
$ jobs
[1]- Running while :; do
sleep 5s; echo save;
done > p &
[2]+ Running cat p > output &
Existe uma maneira de fazer isso em um único comando? Idealmente, eu gostaria de algo ao longo das linhas:
someutil <(while :; do sleep 5s; echo save; done) /dev/stdin > output
Dessa forma, posso canalizar a saída para outro comando em vez de um arquivo.
Tags bash pipe named-pipes