Intereting Posts
Создание wifi-работы Разделение большого дерева каталогов по типу файла scp с sshpass – удаленный каталог и файл с подстановочными знаками Сколько байтов занимает простой nmap для хоста? linux distro, который является легким и работает в бесшовном режиме для использования в командной строке на VirtualBox Наблюдение за записью жесткого диска в пространстве ядра (с драйверами / модулями) sed для поиска нескольких слов и удаления этих строк Настройка курьера для пересылки определенных сообщений на внешние адреса Возможно ли сохранить содержимое виртуальной консоли Linux и прокрутку в файле? «У вас были сломанные пакеты», но никакие пакеты не были задержаны или сломаны Понимание цикла выпуска Arch Linux rsync переделывать файлы? Rsyslog использовать имя хоста вместо крайней FQDN метки Как обрабатывать концы строк CRLF в grep? sed – заменить строку содержимым файла

Трубный вывод двух программ, запущенных параллельно другой программе

У меня есть две программы foo.sh и bar.sh каждая из которых содержит циклы infite, производит непрерывный вывод и должна работать параллельно. Я хотел бы направить вывод обеих этих программ третьему consumer программы.

Изначально у меня был foo.sh только foo.sh и через него было легко

 ./foo.sh | ./consumer 

Но теперь я хотел бы добавить bar.sh чтобы также отправлять его вывод consumer .

Я попробовал то, что было предложено в этих ответах ( Ответ 1 , Ответ 2 ), но они, похоже, работают только для программ, где одна заканчивается, а следующая начинается после окончания первой. Мне нужно, чтобы они оба работали параллельно.

Это не работает, так как он только foo.sh результат foo.sh и никогда не запускает bar.sh :

 ( ./foo.sh ; ./bar.sh ) | ./consumer 

Это счастливое предположение дало мне синтаксическую ошибку:

 ( ./foo.sh & ; ./bar.sh & ) | ./consumer 

Удалите точку с запятой из вашего счастливого предположения …