Shell pipe: Salga inmediatamente cuando falla un comando

Estoy usando una tubería de varios comandos en bash. ¿Hay alguna forma de configurar bash para terminar todos los comandos en toda la tubería de inmediato si uno de los comandos falla?

En mi caso, el primer comando, digacommand1, se ejecuta durante un tiempo hasta que produce algo de salida. Puedes sustituircommand1 por(sleep 5 && echo "Hello"), por ejemplo

Ahora,command1 | false falla después de 5 segundos pero no inmediatamente.

Este comportamiento parece tener algo que ver con la cantidad de salida que produce el comando. Por ejemplo,find / | false regresa de inmediato.

En general, me pregunto por qué bash se comporta así. ¿Alguien puede imaginar alguna situación en la que sea útil ese código comocommand1 | non-existing-command no sale a la vez?

PS: Usar archivos temporales no es una opción para mí, ya que los resultados intermedios que utilizo son demasiado grandes para ser almacenados.

PPS: Niset -e norset -o pipefail parece influir en este fenómeno.

Respuestas a la pregunta(8)

Su respuesta a la pregunta