我有一个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'。为什么会出现这种情况?
答案 0 :(得分:1)
作为条件的最后一个命令的echo
是if
测试以确定要采用的分支。试试这个:
if rv=$?; echo "err A is $rv"; [ "$rv" -eq 0 ]; then
请注意,在您的原始版本中,$?
命令中echo
的值是紧跟在它之前的[
的结果,而不是[
测试的值