2015-10-14 104 views
1

当我管两条命令时,看起来第一条命令必须在第二条命令解析输出之前完成。如何实时解析管道输出?

例如,

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

我希望它会产生输出每秒,但不是。这是真的还是我错过了某些东西(例如缓冲效果)?

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

谢谢。

回答

0

您可以使用像unbuffer(来自expect包)或stdbuf这样的命令强制第一个命令变为无缓冲。这样,它将在每行之后清除它的输出,而不是在它输出例如4096字节。

+0

看起来不错,非常感谢! – user180574