Я хочу записать вывод двух параллельных программ (хвосты в файлах журнала) в один поток вывода в bash.
Я использовал этот пример программы для тестирования:
function foo { for i in $(seq 1 10); do echo "program $*"; sleep 1; done }
Теперь следующее работает нормально
(foo bar & foo baz &) | tee /tmp/output
, но как только я добавляю в микс дополнительный канал, он больше не работает:
(foo bar | grep bar & foo baz &) | tee /tmp/output # does't work
Вывод становится последовательным.Я мог бы создать отдельную программу, включающую grep, но я хотел бы знать, есть ли способ обойти это.
Если кто-нибудь сможет объяснить, почему это не работает, я был бы очень счастлив.