小编Tob*_*obi的帖子

Shell管道:当一个命令失败时立即退出

我在bash中使用了几个命令的管道.如果其中一个命令失败,有没有办法配置bash立即终止整个管道中的所有命令?

在我的例子中,第一个命令command1运行一段时间直到产生一些输出.您可以替代command1(sleep 5 && echo "Hello"),例如.

现在,command1 | false确实在5秒后失败但不是立即失败.

此行为似乎与命令生成的输出量有关.例如,find / | false立即返回.

一般来说,我想知道为什么bash表现得像这样.任何人都可以想象任何情况下,像这样的代码command1 | non-existing-command不会立即退出吗?

PS:使用临时文件对我来说不是一个选项,因为我管道的中间结果很大,无法存储.

PPS:似乎set -eset -o pipefail没有影响这种现象.

bash pipe

23
推荐指数
1
解决办法
1万
查看次数

标签 统计

bash ×1

pipe ×1