运维开发网

shell中(())运算结果和退出值的不同

运维开发网 https://www.qedev.com 2021-04-28 17:21 出处:51CTO 作者:shen_xu
var=-2&&((var+=2))&&echo$var 没有任何输出 var=0&&((var+=2))&&echo$var 输出2

先看一个例子:

var=-2 && (( var+=2 )) && echo $var

没有任何输出

var=0 && (( var+=2 )) && echo $var

2

var=0 && (( var++ )) && echo $var

没有任何输出

var=-1 && (( var++ )) && echo $var

0

很迷惑吧。再看

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的时候必须注意。

0

精彩评论

暂无评论...
验证码 换一张
取 消