Unix KSH:任何错误只返回1,成功返回0

时间:2016-06-20 05:05:02

标签: shell unix ksh

我有unix shell脚本,其中我给出了两个错误和非错误条件,如下所示:

脚本:Test.sh

#!/bin/sh

error1=ERROR
error2=FAIL

CheckError1=`grep $error1 proshell.sh | wc -l`

CheckErro2=`grep $error2 proshell.sh | wc -l`

if [ $CheckError1 -ge 1 ] then
   exit 1

elif [ $CheckError2 -ge 1 ] then
   exit 1

else
   exit 0
fi

注意:问题是,对于退出1的任何错误,我并不总是1。

如何只获得1个错误?

1 个答案:

答案 0 :(得分:1)

您正在检查匹配的行数而不是 grep的退出状态

你想这样做:

error1=ERROR
error2=FAIL
file-proshell.sh

if grep -q "$error1" "$file" || grep -q "$error2" "$file"; then
   exit 1
else
   exit 0
fi

grep -q会抑制输出,但如果找到匹配则退出并退出成功