如何实时解析管道输出?

时间:2015-10-14 21:17:36

标签: bash shell

当我管道两个命令时,似乎第一个命令必须在第二个命令解析输出之前完成。

例如,

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

我希望它会每秒产生一次输出,但不是。是真的还是我错过了什么(例如缓冲效果)?

问题是:如果第一个命令长时间运行,我想实时解析输出。如何使用shell?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用unbuffer(来自expect包)或stdbuf等命令强制第一个命令无缓冲。这样,它将在每一行之后刷新其输出,而不是在它输出之后。 4096字节。