Unix KSH:Return 只有 1 表示任何错误,0 表示成功

Unix KSH: Return only 1 for any error and 0 for success

我有 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?

您正在检查匹配的行数,而不是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 抑制输出,但如果找到匹配则以成功退出状态退出