在$(( ))语法中,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