Bash 如何实时解析管道的输出?

Bash 如何实时解析管道的输出?,bash,shell,Bash,Shell,当我通过管道传输两个命令时,似乎第一个命令必须在第二个命令解析输出之前完成 比如说, $ ping -c 5 10.11.12.13 | while read line; do echo $line; done 我预计它会每秒产生输出,但不会。这是真的还是我遗漏了什么(例如缓冲效应) 问题是:如果第一个命令运行了很长一段时间,我想实时解析输出。如何使用shell来实现它 谢谢。您可以使用(来自expect包)或之类的命令强制第一个命令解除缓冲。这样,它将在每行之后刷新其输出,而不是在输出(例如

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

比如说,

$ ping -c 5 10.11.12.13 | while read line; do echo $line; done
我预计它会每秒产生输出,但不会。这是真的还是我遗漏了什么(例如缓冲效应)

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


谢谢。

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