As partes de um pipeline são iniciadas (perto de) simultaneamente.
Todas as três invocações de second
começarão ao mesmo tempo. As três subshells que isso dá origem invocarão first
para expandir "$(first)"
e as três sleep 1
chamadas ocorrerão simultaneamente (você pode ver na saída de rastreio que elas acontecem ). / p>
É apenas a E / S que serializa um pipeline, ou seja, um processo no pipeline que aguarda a entrada do anterior ou espera que sua saída seja lida pela próxima.
Para que os bits do pipeline sejam iniciados, execute e saia em sequência:
echo nyi | second >out1
second <out1 >out2
second <out2
Ou seja, execute-os separadamente e armazene os resultados intermediários em arquivos.