在我的情况下,第一个命令(例如`command1 `)运行一段时间,直到产生一些输出。例如,您可以将`command1`替换为`(sleep 5 && echo "Hello")`。
现在,`command1 | false`会在5秒后失败,但不会立即退出。
这种行为似乎与命令产生的输出数量有关。例如,`find / | false`会立即返回。
总的来说,我想知道Bash为什么会有这种行为。是否有任何情况需要像`command1 | non-existing-command`这样的代码不立即退出?
PS:对于我来说,使用临时文件不是一个选择,因为我要传递的中间结果太大而无法存储。
PPS:`set -e`和`set -o pipefail`似乎都不影响这种现象。