先看一个例子: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的时候必须注意。