我有一個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