在$(( ))语法中,shell 提供了完整的算数运算能力,而且使用与c相同运算符与优先级。

语法:

((表达式1,表达式2…))

特点:

1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。

2、在双括号结构中,所有变量可以不加入:“$”符号前缀。

3、双括号可以进行逻辑运算,四则运算

4、双括号结构 扩展了for,while,if条件测试运算

5、支持多个表达式运算,各个表达式之间用“,”分开

参考这篇文章

http://www.cnblogs.com/chengmo/archive/2010/10/19/1855577.html



算数运算符表

运算符                 意义                          顺序           优先级
++ --           增加或减少,可前置或后置        左至右         高排至低排
+ - ! ~         一元的的正负号,逻辑位与取反    右至左            
* / %           乘法,除法,取余                左至右
+ -             加法,减法                      左至右
<< >>           向左移位,向右移位            左至右
< <= > >=       小于 小于等于,大于 大于等于 左至右
== !=           相等,不等                     左至右
&  |            位的AND,位的OR       左至右
&& ||           逻辑的AND,逻辑的O
? :        条件表达式          右至左
= += -+ /=
%= &= |=
<<= >>= ^=      赋值运算符                   右至左

关系运算符
< <= > >= == !=  产生数字结果,1表示为真,0表示为假,例如
[root@master ~]# echo $((1==1))
1
[root@master ~]# echo $((1!=1))
0

逻辑运算符
&& 逻辑与 || 逻辑或 ,任何非零的值为真 1,相反则为假 0
[root@master ~]# echo $(( (1==1) || (1==0) ))        # 1 或 0 为 1
1
[root@master ~]# echo $(( (1==1) && (1==0) ))        # 1 与 0 为 0
0

赋值运算符
[root@master ~]# i=1;echo "$((i++)) $i"              #i++后置式,变量最后+1
1 2
[root@master ~]# i=1;echo "$((++i)) $i"              #++i前置试,变量先+1
2 2