4

(在 bash 中)是否可以观察命令行程序的输出并在出现特定字符串时进行标记?

基本上我的问题是我们有大量的构建脚本会产生大量的控制台输出。我想看控制台说出“错误”这个词,然后以某种方式提醒我。

然后我知道去观看其余的过程/取消它。

4

3 回答 3

5

您可以grep使用字符串,但您需要存储 make 的原始输出,这可以使用tee. 一出现错误就使用mplayer播放声音文件的例子:

make 2>&1 | tee make.log | grep -lq ERROR && mplayer alert.wav
于 2013-01-09T12:50:55.293 回答
5

从命令行尝试这样:

<YOUR_BUILD_CMD> | grep ERROR

输出时它只会打印出错误<YOUR_BUILD_CMD>|管道运算符,这里是grep命令的手册。

于 2013-01-09T12:47:29.317 回答
0

我会通过一个while循环来检查每一行输出。例如

cmd &| while read line;do if [[ ${line} =~ ErrorRegex ]];then echo Error Detected: $line; else echo $line; fi;done

将其分解为“&|” 将 stderr 和 stdout 重定向到一个 while 循环,该循环一次读取 1 行输入并将其放入 line 变量中。然后一个简单的正则表达式比较会查找错误字符串,您可以突出显示该行或将其记录在任何您喜欢的地方。如果它与错误不匹配,它将正常打印输出。

于 2013-01-09T13:20:19.690 回答