⑴ shell腳本的一個返回值問題。
首先,要理解 (( )) 這個符號用作數學運算或整數的邏輯比較,一個例子:
[ 「$a」 -lt 16 ] 等同於 (( a < 16 ))
$?則是返回上一個命令的執行結果,成功(邏輯真)返回0,失敗(邏輯假)返回1。
本題中,
(( 0 )) 返回邏輯假(false),所以$?返回1;
(( 1 )) 返回邏輯真(true),所以$?返回0。
⑵ shell求助,數值比較-eq,-ne,-gt,-ge,-lt,-le。書上說的是:假值是零,真值為1,可寫的腳本卻出錯了。
要不是你看錯了,要不就是書上寫錯了!
正解:$?是shell變數,表示"最後一次執行命令"的退出狀態.0為成功,非0為失敗.
切記:$?永遠表示shell命令最後一次執行後的退出狀態,當函數執行完畢後,如果又執行了其它命令,則$?不再表示函數執行後的狀態,而表示其它命令的退出狀態.