3
(echo foo && sleep 1 && echo bar) | grep -P . | tee /dev/null
上面的代碼是我能想出的問題的最小案例。預期的行爲是foo
會被echo'd,第二個會通過,然後bar
會被echo'd。grep,tee和睡覺不在一起玩
實際情況是,第二次通過然後foo
和bar
被同時回顯。如果刪除或者或grep
或tee
命令(或者顯然)都會發生正確的行爲。但是與他們在一起它不是。
我認爲這是某種緩衝問題,但我不知道如何解決它。這段時間裏我正在執行的腳本運行了很長一段時間,直到最後纔看到任何日誌消息。 HALP! :(
可能重複。[bash下力exec'd過程中有緩衝的標準輸出] (http://stackoverflow.com/questions/3332045/bash-force-execd-process-to-have-unbuffered-stdout) – 2014-12-04 02:36:37
通過'正確'和'預期',你的意思是'所需'。你看到的行爲是無論是正確的還是預期的。 – 2014-12-04 02:43:25
http://mywiki.wooledge.org/BashFAQ/009 – tripleee 2014-12-04 06:53:20