Предположим, у меня есть следующая команда в bash:
one | two
one
работает в течение длительного времени, создавая поток вывода, а two
выполняет быструю операцию с каждой строкой этого потока, но two
вообще не работает, если только первое прочитанное значение не указывает, сколько значений нужно прочитать в строке. one
не выводит это значение, но я заранее знаю, что это такое (допустим, это 15
). Я хочу отправить 15\n
через канал до вывода one
. Я не хочу изменять one
или two
.
Первой мыслью было сделать:
echo "$(echo 15; one)" | two
Это дает мне правильный вывод, но он вообще не проходит через канал, пока команда one
не завершится. Я хочу, чтобы вывод сразу же начал передаваться по каналу, так как его выполнение занимает много времени (месяцы).
Я также пробовал:
echo 15; one | two
Который, конечно же, выдает 15, но не отправляет его по каналу в two
.
Есть ли способ в bash передать «15\n» через канал, а затем начать потоковую передачу one
через тот же канал?
{ echo 15; one; } | two
- person gniourf_gniourf   schedule 29.06.2013