我有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个错误?
答案 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
会抑制输出,但如果找到匹配则退出并退出成功