摘自 shell 13问
好了,最后为大家介绍 $(( )) 的用途吧:它是用来作整数运算 的。
在 bash 中,$(( )) 的整数运算符号大致有这些:
+ - * / :分别为 "加、减、乘、除"。
% :余数运算
& | ^ !:分别为 "AND、OR、XOR、NOT" 运算。
~ # a=1
~ # b=2
~ # echo $((a+b))
3
~ # echo $(($a+$b))
3
~ # echo $((a-b))
-1
~ # echo $((a/b))
0
~ # echo $((a*b))
2
~ # echo $((a%b))
1
~ # a=1
~ # b=3
~ # echo $((a&b))
1
~ # echo $((a|b))
3
~ # echo $((a^b))
2
~ # echo $((!b))
0
~ # echo $((!a))
0
例:
[code]$ a=5; b=7; c=2
$ echo $(( a+b*c ))
19
$ echo $(( (a+b)/c ))
6
$ echo $(( (a*b)%c))
1[/code]
在 $(( )) 中的变量名称,可于其前面加 $ 符号来替换,也可以不用(busybox中也可以支持),如:
$(( $a + $b * $c)) 也可得到 19 的结果
此外,$(( )) 还可作不同进位(如二进制、八进位、十六进制)作运算呢,只是,输出结果皆为十进制而已(busybox不支持):
echo $((16#2a)) 结果为 42 (16进位转十进制)