我有一个if
声明如下。为什么IF条件被忽略 - Shell
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'。为什么会发生这种行为?
'then'在'echo'之后(或者在新行的下面),'if'后面,''echo' – bistoco
@bistoco语法是合法的,即使它没有提供你期望的结果* 。 – chepner
@chepner:你说这是合法的;你能解释一下吗,为什么?我查阅了* dash *手册(AFIK实现了POSIX标准),并明确指出'then'必须遵循'if'。它没有说明如果两者之间存在语句会发生什么,所以我认为它在语法上是非法的,但shell决定不输出错误消息,而是简单地展示未定义的行为。 – user1934428