linux – 检测到某些输出时自动取消二进制执行

linux – 检测到某些输出时自动取消二进制执行,第1张

概述是否有可能以某种方式通过 shell运行可执行文件并自动使其在输出中匹配/检测到特定字符串的那一刻停止执行?就像我会手动点击CTRL C一样? 如果有,怎么样? 你可以使用awk: program | awk '/pattern/{exit}1' 如果您还想打印包含图案的线条,请说: program | awk '/pattern/{print;exit}1' 例如: $seq 200 | awk 是否有可能以某种方式通过 shell运行可执行文件并自动使其在输出中匹配/检测到特定字符串的那一刻停止执行?就像我会手动点击CTRL C一样?

如果有,怎么样?

解决方法 你可以使用awk:

program | awk '/pattern/{exit}1'

如果您还想打印包含图案的线条,请说:

program | awk '/pattern/{print;exit}1'

例如:

$seq 200 | awk '/9/{print;exit}1'123456789

编辑:(参考您的评论,程序是否会停止.)以下是一个将在无限循环中执行的脚本:

n=1while : ; do  echo $n  n=$((n+1))  sleep 1done

这个脚本foo.sh执行时说:

$time bash foo.sh | awk '/9/{print;exit}1'123456789real    0m9.097suser    0m0.011ssys     0m0.011s

如您所见,在输出中检测到模式时脚本终止.

编辑:似乎您的程序缓冲输出.你可以使用stdbuf:

stdbuf -o0 yourprogram | awk '/pattern/{print;exit}1'

如果你正在使用mawk,那么说:

stdbuf -o0 yourprogram | mawk -W interactive '/pattern/{print;exit}1'
总结

以上是内存溢出为你收集整理的linux – 检测到某些输出时自动取消二进制执行全部内容,希望文章能够帮你解决linux – 检测到某些输出时自动取消二进制执行所遇到的程序开发问题。

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

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

原文地址: http://outofmemory.cn/yw/1022100.html

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

发表评论

登录后才能评论

评论列表(0条)

保存