2017-07-27 110 views
0

我有一个简单的shell脚本,我想设置为一个周期性的詹金斯作业,而不是cronjob的可见性和可用性较差的用户。壳牌脚本将不会在詹金斯失败

下面是脚本:

#!/bin/bash 
outputfile=/opt/jhc/streaming/check_error_output.txt 

if [ "grep -sq 'Unable' $outputfile" == "0" ]; then 
    echo -e "ERROR MESSAGE FOUND\n" 
    exit 1 
else 
    echo -e "NO ERROR MESSAGES HAVE BEEN FOUND\n" 
    exit 0 
fi 

我的剧本总是会返回“没有错误消息已被发现”不管是否“无法”在$ OUTPUTFILE,我究竟做错了什么?

我还需要我的詹金斯作业类这是一个成功,如果“无法”未发现(例如,如果脚本返回“0”,则通,其他一切都失败)

回答

0

执行grep命令和检查退出状态改为:

#!/bin/bash 
outputfile=/opt/jhc/streaming/check_error_output.txt 
grep -sq 'Unable' $outputfile 
if [ "$?" == "0" ]; then 
    echo -e "ERROR MESSAGE FOUND\n" 
    exit 1 
else 
    echo -e "NO ERROR MESSAGES HAVE BEEN FOUND\n" 
    exit 0 
fi 
+0

你这个人!我自己应该想到这一点,我一直在盯着它太久,我的头已经消失 – jto

0

您正在比较两个不同的字符串。结果总是错误的,即其他部分被采纳。

此外,不需要显式查询状态码。这样做:

if grep -sq 'Unable' $outputfile 
then 
    .... 
else 
    .... 
fi 
+0

这是我最初开始的方式,除非我在'[]'中有我的grep命令“ – jto