Shell 中的运算
+ - * / % (取余) **(幂运算)
运算符
优先级 | 运算符 | 运算符 |
---|---|---|
13 | -,+ | 单目负、 单目正 |
12 | !,~ | 逻辑非、 按位取反或补码 |
11 | *,/,% | 乘、 除、 取模 |
10 | +,- | 加、 减 |
9 | <<,>> | 按位左移、 按位右移 |
8 | <=,>=,<,> | 小于或等于、 大于或等于、 小于、 大于 |
7 | ==,!= | 等于、 不等于 |
6 | & | 按位与 |
5 | ^ | 按位异或 |
4 | | | 按位或 |
3 | && | 逻辑与 |
2 | || | 逻辑或 |
1 | =,+=,-=,*=,/=,%=,&=,^=,=,<<=,>>= | 赋值、 运算且赋值 |
1、 $((运算式)) 或 $[运算式]
$[]和$(())
[root@shell ~]# echo $[1+2]
3
[root@shell ~]# echo $((1+2))
3
[root@shell ~]# echo $[2**16]
65536
2、expr 数值运算工具
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和变量bb赋值
[root@localhost ~]# dd=$(expr $aa + $bb)
#dd的值是aa和bb的和。注意“+”号左右两侧必须有空格
3、let
常用于while循环变量更新
let 变量=值,运算公式里面不能有空格
[root@shell ~]# let sum=1+2
[root@shell ~]# echo $sum
3
[root@shell ~]# a=8
[root@shell ~]# b=5
[root@shell ~]# let ji=$a*$b
[root@shell ~]# echo $ji
40
[root@shell ~]# let i++ //在循环中更新变量值常用的,每次i的值加1
4、Linux计算器
[root@shell ~]# bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
5/6
0
6/5
1
9/8
1
scale=3 //指定精度,精度就是小数点后保留几位小数
9/8
1.125
1/3
0.333
ctrl + d 退出
4、 declare命令
选项: -: 给变量设定类型属性
+:取消变量的类型属性
-i:将变量声明为整数型(integer)
-x:将变量声明为环境变量
-p:显示指定变量的被声明的类型a : 将变量声明为数组型
r:将变量声明为只读变量
p:显示指定变量的被声明的类型
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
#给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb
1、变量声明为数值型
declare -i num=12
也可以查看变量类型
declare -p num
得到的结果如下
declare -i num="12"
2、声明数组变量
(1)定义数组
arr[0]=x
arr[1]=y
declare -a arr[2]=z
(2)查看数组
echo ${arr} ---结果x
echo ${arr[2]} ---结果z
echo ${arr[8]} ---结果x y z
和普通变量区别是使用大括号,同时使用下标,若没有下标,则默认使用0。
3、声明环境变量
declare -x t=123
export命令调用的也是上面declare -x 的命令
4、声明变量只读属性
declare -r a=123
重新赋值会报错,不能修改,不能删除
5、查看变量属性
declare -p 查看所有变量属性
declare -p 变量名 查看指定变量的属性