标签: bash shell
当我管道两个命令时,似乎第一个命令必须在第二个命令解析输出之前完成。
例如,
$ ping -c 5 10.11.12.13 | while read line; do echo $line; done
我希望它会每秒产生一次输出,但不是。是真的还是我错过了什么(例如缓冲效果)?
问题是:如果第一个命令长时间运行,我想实时解析输出。如何使用shell?
感谢。
答案 0 :(得分:0)
您可以使用unbuffer(来自expect包)或stdbuf等命令强制第一个命令无缓冲。这样,它将在每一行之后刷新其输出,而不是在它输出之后。 4096字节。
unbuffer
expect
stdbuf