2015-10-14 88 views
1

當我管兩條命令時,看起來第一條命令必須在第二條命令解析輸出之前完成。如何實時解析管道輸出?

例如,

$ ping -c 5 10.11.12.13 | while read line; do echo $line; done 

我希望它會產生輸出每秒,但不是。這是真的還是我錯過了某些東西(例如緩衝效果)?

問題是:如果第一個命令運行很長一段時間,我想實時解析輸出。如何使用shell做到這一點?

謝謝。

回答

0

您可以使用像unbuffer(來自expect包)或stdbuf這樣的命令強制第一個命令變爲無緩衝。這樣,它將在每行之後清除它的輸出,而不是在它輸出例如4096字節。

+0

看起來不錯,非常感謝! – user180574