小编ste*_*n.z的帖子

为什么 bash while 循环在管道到终止的子命令时不退出?

为什么下面的命令不退出?而不是退出,循环无限期地运行。

虽然我使用更复杂的设置发现了这种行为,但该命令的最简单形式简化为以下形式。

不退出:

while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Run Code Online (Sandbox Code Playgroud)

上面没有错别字。每个'|' 是一个管道。“exit 1”代表另一个运行并退出的进程。

我希望“exit 1”在 while 循环中引起 SIGPIPE(在没有读取器的管道上写入)并导致循环中断。但是,循环继续运行。

为什么命令不停止?

linux bash shell command-line bash-scripting

13
推荐指数
1
解决办法
3645
查看次数

标签 统计

bash ×1

bash-scripting ×1

command-line ×1

linux ×1

shell ×1