先看一個例子:shell
var=-2 && (( var+=2 )) && echo $varide
沒有任何輸出it
var=0 && (( var+=2 )) && echo $varclass
2
di
var=0 && (( var++ )) && echo $varview
沒有任何輸出vi
var=-1 && (( var++ )) && echo $varco
0editor
很迷惑吧。再看
var=0 && (( ++var )) && echo $var
1
(())雙園括號運算不是退出值(exit),var=-2時,(( var+=2 ))結果是0,邏輯值false,也就不打印。
var=0時(( var+=2 ))結果非0,邏輯值true,打印。
再看更有意思的,
var=0時(( var++ )) ,是先運算再加賦值加1,因此結果是0,邏輯值就是false,結果不打印。
var=-1 && (( var++ ))就很顯然,先運算,結果是-1,邏輯值true,打印
var=0 && (( ++var ))就反證了這個現象,這個是先賦值加1,再運算,那麼結果就是1,邏輯值true,打印
這個在寫shell的時候必須注意。