为什么下面的命令不退出?而不是退出,循环无限期地运行。
虽然我使用更复杂的设置发现了这种行为,但该命令的最简单形式简化为以下形式。
不退出:
while /usr/bin/true ; do echo "ok" | cat ; done | exit 1
Run Code Online (Sandbox Code Playgroud)
上面没有错别字。每个'|' 是一个管道。“exit 1”代表另一个运行并退出的进程。
我希望“exit 1”在 while 循环中引起 SIGPIPE(在没有读取器的管道上写入)并导致循环中断。但是,循环继续运行。
为什么命令不停止?