Eu tenho dois programas foo.sh
e bar.sh
ambos contêm loops infinitos, produzem saída contínua e devem ser executados em paralelo. Gostaria de canalizar a saída de ambos os programas para um terceiro programa consumer
.
Inicialmente eu só tinha foo.sh
corrida e a tubulação era fácil via
./foo.sh | ./consumer
Mas agora eu gostaria de adicionar bar.sh
também enviar sua saída para consumer
.
Eu tentei as coisas sugeridas nessas respostas ( Resposta 1 , Resposta 2 ), mas elas só parecem funcionar para programas em que um termina e o próximo é iniciado após o término do primeiro. Preciso que ambos funcionem em paralelo.
Isso não funciona, pois apenas canaliza a saída foo.sh
e nunca inicia bar.sh
:
( ./foo.sh ; ./bar.sh ) | ./consumer
Este palpite de sorte me deu um erro de sintaxe:
( ./foo.sh & ; ./bar.sh & ) | ./consumer
Remova o ponto e vírgula do seu palpite da sorte...