我不做太多的shell脚本,但实际上我想这样做:
发布于 2014-04-30 00:30:01
counter=0
while [ $counter -lt 30 ]; do
grunt check | grep Failed
let counter=counter+1
done > some file上面的代码使用管道来捕获grunt命令的输出并将其发送给grep。grep搜索输出并打印包含单词Failed的任何行。然后将任何这样的行发送到名为somefile的文件。
作为次要的一点,我已经将计数器转换为小写。这是因为系统使用大写环境变量。如果您练习使用小写的,那么您不会意外地覆盖一个。(在这种情况下,没有名为COUNTER的系统变量,因此您是安全的。)
另一种计算到30的方法:
您可能会发现这更简单:
for counter in {1..30}; do
grunt check | grep Failed
done > somefile{1..30}表示法提供从1到30的数字。这是一个bash特性,所以不要尝试在一个普通的POSIX外壳上使用它。
获取更多的上下文
如果您希望看到更多关于错误消息的上下文,grep提供了几个帮助选项。若要查看行匹配"Failed“和前面的行,请使用-B
for counter in {1..30}; do
grunt check | grep -B 1 Failed
done >somefile类似地,-A可用于在匹配之后显示行。-C将在比赛前后显示线条。
发布于 2014-04-30 00:30:24
for ((cr=0; cr<30; cr++))
do
grunt check | grep Failed
done > outfile.txthttps://stackoverflow.com/questions/23377479
复制相似问题