(在bash中)是否可以观察命令行程序的输出并在发生特定字符串时标记?观察字符串命令行
基本上我的问题是,我们有大量的生成脚本,产生输出山控制台。我想看控制台说'错误'一词,然后以某种方式提醒我。
然后我知道去看看其余的过程/取消它。
(在bash中)是否可以观察命令行程序的输出并在发生特定字符串时标记?观察字符串命令行
基本上我的问题是,我们有大量的生成脚本,产生输出山控制台。我想看控制台说'错误'一词,然后以某种方式提醒我。
然后我知道去看看其余的过程/取消它。
您可以使用grep
作为字符串,但您需要存储make的原始输出,这可以使用tee
完成。一旦发生错误,使用mplayer播放声音文件的示例:
make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav
我会通过while循环来检查每行输出。例如
cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done
将其分解为“& |”将stderr和stdout重定向到while循环,每次读取1行输入并将其放入行变量中。然后一个简单的正则表达式比较寻找一个错误字符串,你可以突出显示该行或将它记录在你喜欢的任何地方。如果它与错误不匹配,它只会正常打印输出。
+1简洁明了的解决方案。但是这不会产生任何输出。因为你在ERRROR中有一个错误。 :D – Kent
ahh thanx的警告:) – linski