为什么IF条件被忽略 - 壳牌

时间:2017-07-02 14:51:38

标签: shell

我有一个if语句,如下所示。

if [ $? -eq 0 ]
echo "err A is $?"
then
alrtid="OK"
echo "DO THIS"
else
echo "Do THAT"
alrtid="NOK"

但是当我执行它时它会返回:

'[' 1 -eq 0 ']'
echo 'err A is 1'
err A is 1
alrtid=OK

根据声明,它应该返回警告' NOK'。为什么会出现这种情况?

1 个答案:

答案 0 :(得分:1)

作为条件的最后一个命令的echoif测试以确定要采用的分支。试试这个:

if rv=$?; echo "err A is $rv"; [ "$rv" -eq 0 ]; then

请注意,在您的原始版本中,$?命令中echo的值是紧跟在它之前的[的结果,而不是[测试的值