Chcę przechwytywać dane wyjściowe z dwóch współbieżnych programów (ogony na logach) do jednego strumienia wyjściowego w bashu.Połącz dane wyjściowe dwóch współbieżnych programów z bashem
Kiedyś ten przykładowy program do testowania:
function foo { for i in $(seq 1 10); do echo "program $*"; sleep 1; done }
Teraz następujących prac drobnych
(foo bar & foo baz &) | tee /tmp/output
ale gdy dodaję dodatkową rurę w miksie to już nie działa:
(foo bar | grep bar & foo baz &) | tee /tmp/output # does't work
Dane wyjściowe stają się sekwencyjne. Mógłbym stworzyć osobny program, który zawiera grep, ale chciałbym się dowiedzieć, czy istnieje sposób obejścia tego.
Jeśli ktoś może wyjaśnić, dlaczego to nie działa, byłbym bardzo szczęśliwy.
"mimo że jest, z powodu tee". grep to * nie * zapisywanie do tty. grep pisze do fajki, a tee pisze do tty. –
Masz absolutną rację. Złe sformułowanie z mojej strony - będę edytować mój post, aby wyjaśnić. – FatalError