linux – Bash捕获运行脚本的输出

linux – Bash捕获运行脚本的输出,第1张

概述我可能根本不知道如何说出我要问的内容,但我无法得到我正在寻找的答案. 所以我想要的是在bash脚本中运行命令或脚本逐行捕获输出并根据某个值检查它. 我已经尝试了一些效果 #!/bin/bash./runningscript.sh | while read line; doecho "output $line"done 和 #!/bin/bash./runningscript.sh | { 我可能根本不知道如何说出我要问的内容,但我无法得到我正在寻找的答案.

所以我想要的是在bash脚本中运行命令或脚本逐行捕获输出并根据某个值检查它.

我已经尝试了一些效果

#!/bin/bash./runningscript.sh | while read line; doecho "output $line"done

#!/bin/bash./runningscript.sh | {read line echo "output $line"}

两者似乎只是执行脚本给我正常的输出.我想要的是从这个bash脚本中处理来自runningscript.sh的每一行输出,因为它是输出我不希望它等到runningscript.sh完成运行来处理它.

对不起,我是一个非常偶然和简单的bash用户,所以这可能是最愚蠢的问题,但任何帮助将不胜感激

解决方法 你的脚本工作.但输出直到很晚才出现,甚至可能在命令完成后出现?这通常是因为缓冲:在输出通过管道传输到管道中的下一个进程之前,runningscript.sh必须填充一个缓冲区,通常为4 kB.

修复是使用unbuffer命令,它是expect包的一部分:

unbuffer runningscript.sh | something_else

这使得runningscript.sh认为它正在写入交互式终端.结果,它没有缓冲.

有关更多信息,请参阅https://unix.stackexchange.com/questions/25372/turn-off-buffering-in-pipe

或者,如果您有GNU coreutils 7.5或更高版本,则可以使用stdbuf命令禁用输出缓冲:

stdbuf -oO runningscript.sh | something_else
总结

以上是内存溢出为你收集整理的linux – Bash捕获运行脚本的输出全部内容,希望文章能够帮你解决linux – Bash捕获运行脚本的输出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/1027248.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存