linux – 检测到某些输出时自动取消二进制执行
发布时间:2020-12-14 00:06:02 所属栏目:Linux 来源:网络整理
导读:是否有可能以某种方式通过 shell运行可执行文件并自动使其在输出中匹配/检测到特定字符串的那一刻停止执行?就像我会手动点击CTRL C一样? 如果有,怎么样? 解决方法 你可以使用awk: program | awk '/pattern/{exit}1' 如果您还想打印包含图案的线条,请说:
是否有可能以某种方式通过
shell运行可执行文件并自动使其在输出中匹配/检测到特定字符串的那一刻停止执行?就像我会手动点击CTRL C一样?
如果有,怎么样? 解决方法
你可以使用awk:
program | awk '/pattern/{exit}1' 如果您还想打印包含图案的线条,请说: program | awk '/pattern/{print;exit}1' 例如: $seq 200 | awk '/9/{print;exit}1' 1 2 3 4 5 6 7 8 9 编辑:(参考您的评论,程序是否会停止.)以下是一个将在无限循环中执行的脚本: n=1 while : ; do echo $n n=$((n+1)) sleep 1 done 这个脚本foo.sh执行时说: $time bash foo.sh | awk '/9/{print;exit}1' 1 2 3 4 5 6 7 8 9 real 0m9.097s user 0m0.011s sys 0m0.011s 如您所见,在输出中检测到模式时脚本终止. 编辑:似乎您的程序缓冲输出.你可以使用stdbuf: stdbuf -o0 yourprogram | awk '/pattern/{print;exit}1' 如果你正在使用mawk,那么说: stdbuf -o0 yourprogram | mawk -W interactive '/pattern/{print;exit}1' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |