我不太会编写shell脚本,但我想从本质上做到这一点:
1.运行命令“grunt check”大约30次(该过程需要60秒)。
1.在这个命令的输出上做一个正则表达式,“一些随机错误消息,失败”,其中“失败”是我要搜索的东西,但我想捕获整个句子。
1.将关联行写入文件。
#!/bin/bash
COUNTER=0
while [ $COUNTER -lt 30 ]; do
command grunt check
// ERROR = regex(/\/Failed./)
// WRITE ERROR TO FILE
let COUNTER=COUNTER+1
done
2条答案
按热度按时间rjzwgtxy1#
hpcdzsge2#
上面的代码使用管道捕获
grunt
命令的输出并将其发送到grep
。grep
搜索输出并打印包含单词Failed
的任何行。然后将任何这样的行发送到名为somefile
的文件。作为一个小问题,我已经将COUNTER转换为小写。这是因为系统使用大写的环境变量。如果你习惯使用小写的环境变量,那么你就不会意外地覆盖一个。(在这个特殊的例子中,没有名为COUNTER的系统变量,所以你是安全的。)
数到30的另一种方法:
您可能会发现这更简单:
{1..30}
表示法提供了从1到30的数字,它是一个bash特性,所以不要尝试在基本的POSIX shell上使用它。获取更多上下文
如果您想查看错误消息的更多上下文,
grep
提供了几个选项。要查看匹配“Failed”的行和前面的行,请使用-B
:同样,
-A
可用于显示匹配后的行。-C
将显示匹配前后的行。