我遇到了BASH無限循環的某些奇怪行爲,其輸出被流水線化到另一個進程。也就是說,我運行這兩個命令:從BASH退出管道中的無限循環
(while true; do echo xxx; done) | head -n 1
(while true; do date; done) | head -n 1
第一個退出瞬間,而第二個沒有(我相信它會永遠運行下去,而不被殺害)。我也嘗試了一個隱含的無限循環:
yes | head -n 1
它也會自行退出。每種情況下都會立即在屏幕上打印出適當的輸出行。我只是好奇什麼決定了這樣一個委員會是否會完成。
注意,括號是不必要的; 「while」循環本身就是一個完整的命令,可以是管道的左側。 – chepner