我在bash中使用了几个命令的管道.如果其中一个命令失败,有没有办法配置bash立即终止整个管道中的所有命令?
在我的例子中,第一个命令command1运行一段时间直到产生一些输出.您可以替代command1的(sleep 5 && echo "Hello"),例如.
现在,command1 | false确实在5秒后失败但不是立即失败.
此行为似乎与命令生成的输出量有关.例如,find / | false立即返回.
一般来说,我想知道为什么bash表现得像这样.任何人都可以想象任何情况下,像这样的代码command1 | non-existing-command不会立即退出吗?
PS:使用临时文件对我来说不是一个选项,因为我管道的中间结果很大,无法存储.
PPS:似乎set -e也set -o pipefail没有影响这种现象.