常用运算符

在Shell中常用运算符:

优先级 运算符 说明
13 -,+ 单目负,单目正
12 !,~ 逻辑非、按位取反或者补码
11 *,/,% 乘、除、取模
10 +,- 加、减
9 <<,>> 按位左移、按位右移
8 <=,>=,<,> 小于等于、大于等于、小于、大于
7 !=,== 不等于、等于
6 & 按位与
5 ^ 按位异或
4 ` `
3 && 逻辑与
2 `
1 +=,-,=,/=,%=,&=,^,=

优先级数值越大优先级越高,具有较高优先级级别的运算符先于较低级别的运算符进行求值运算。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 例1:加减乘除
# 虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级。
[root@cjh ~]# num=$(( (10+8)*6/2 ))
[root@cjh ~]# echo $num
54
# 例2:取模运算
[root@cjh ~]# num=$(( 19%5 ))
[root@cjh ~]# echo $num
4
# 例3:逻辑与
# 逻辑与运算只有相与的两边都是1,与的结果才是1,否则与的结果是0
[root@cjh ~]# value=$(( 1&&0 ))
[root@cjh ~]# echo $value
0

Shell中数值运算的方法

在Shell中所有变量的默认类型是字符串,那如果需要数值运算的话,可以采用以下方法

**使用 $((运算符)) 或者$[运算符] **的方式进行运算。

1
2
3
4
5
6
7
# 给变量aa和bb赋值
[root@cjh tmp]# aa=11
[root@cjh tmp]# bb=22
# 求和
[root@cjh ~]# cc=$(( $aa+$bb))
[root@cjh ~]# echo $cc
33

$( )中存放的是系统命令,$(( ))中是进行数学运算的。

$[ ] 不推荐使用,因为 [ ] 在Shell中有极其特殊重要的作用,那就是[[Shell 中的 test 测试命令|测试]]。