[toc]
shell数值运算
1.算术运算符表
| 算数运算符 | 含义 |
|---|---|
+ 、- | 加法、减法 |
* 、/ 、% | 乘法、除法、取模 |
** | 幂云算 |
++ 、-- | 增加、减少 |
&& 、` | |
< 、<= 、> 、>= | 小于、小于等于、大于、大于等于 |
== 、!= 、= | 相等、不相等、对于字符串 = 表示相当于 |
<< 、>> | 向左移位、向右移位 |
~ 、& 、| 、^ | 按位取反、按位与、按位异或、按位或 |
= 、+= 、-= 、*= 、/= 、%= | 赋值运算符,例如 a+=1 相当于 a=a+1 |
2.运算操作符与运算命令
| 运算操作符与运算命令 | 含义 |
|---|---|
(()) | 用于整数运算的常用运算符,效率最高 |
let | 用于整数运算,类似于 (()) |
expr | 可用于整数运算,但还有其他的额外功能 |
bc | linux下的一个计算器程序 |
$[] | 用于整数运算 |
awk | awk既可以用于整数运算,也可以用于小数运算 |
declare | 定义变量值和属性,-i 参数可以用于定义整型变量,做运算 |
3.双小括号"(())"数值运算
示例
$ echo $((1+10))
11
$ echo $((1-10))
-9
示例1 用(())做数值运算
$ echo $((1+2**3-4%3)) #先乘除后加减,先算2**3=8 4%3=1,最后1+8-1=8
8
$ ((a=1+2**3-4%3))
$ echo $a
8
示例2 在变量前后使用--和++特殊运算符的表达式
$ a=10
$ echo $((a++)) #如果a在运算符++的前面,那么在输出整个表达式时,会输出a的值
10
$ echo $a #执行上面的表达式后,因为有a++,因此a会增加1
11
$ a=10
$ echo $((a--)) #如果a在运算符--的前面,那么在输出整个表达式时,会输出a的值
10
$ echo $a #执行上面的表达式后,因为有a--,因此a会减少1
9
$ a=10
$ echo $((++a)) #如果a在运算符++的后面,那么在输出整个表达式时,先进行自增
11
$ echo $a
11
$ a=10
$ echo $((--a)) #如果a在运算符--的后面,那么在输出整个表达式时,先进行自减
9
$ echo $a
9
示例3 通过(())运算后赋值给变量
$ a=100
$ b=$((a+1))
$ echo $b
101