Этот ответ показывает множество способов передать несколько команд в другую команду, но, поскольку они используют подоболочки, вы не можете использовать стандартный ввод.
Хотя вы можете добиться этого с помощью именованных каналов, это несколько уродливо и впоследствии может оставить оставшиеся процессы:
$ 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 &
Есть ли способ сделать это с помощью одной команды? В идеале я бы хотел что-то вроде:
someutil <(while :; do sleep 5s; echo save; done) /dev/stdin > output
Таким образом, я могу передать вывод другой команде вместо файла.