我遇到了BASH无限循环的一个有点奇怪的行为,输出被管道传输到了另一个进程中。也就是说,我运行了以下两个命令:
(while true; do echo xxx; done) | head -n 1
(while true; do date; done) | head -n 1
第一个立即退出,而第二个不会(我认为它将永远运行而不被杀死)。我还尝试了一个隐式的无限循环:
yes | head -n 1
它也能自己退出。每种情况下,屏幕上都会立即打印出适当的输出行。我只是好奇是什么决定了这样的命令何时结束。