1 数值运算与运算符
出现上面的原因是,Linux中的变量默认都是字符串类型的。
◆ declare声明变量类型
[root@localhost ~]# declare [+/-][选项] 变量名
选项:
-: 给变量设定类型属性
+: 取消变量的类型属性
-i: 将变量声明为整数型(integer)
-x: 将变量声明为环境变量
-p: 显示指定变量的被声明的类型
扩展:将一个变量声明为环境变量,使用 export,此时查看会看到 –x
◆ 数值运算
→ 方法1
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22 #给变量aa和bb赋值
[root@localhost ~]# declare -i cc=$aa+$bb
→方法2:expr或let数值运算工具 (不是很推荐)
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22 #给变量aa和变量bb赋值
[root@localhost ~]# dd=$(expr $aa + $bb) #dd的值是aa和bb的和。注意“+”号左右两侧必须有空格
→方法3:“$((运算式))”或“$[运算式]”(比较直观,强烈推荐)
[root@localhost ~]# aa=11
[root@localhost ~]# bb=22
[root@localhost ~]# ff=$(( $aa+$bb ))
[root@localhost ~]# gg=$[ $aa+$bb ]
◆ 运算符
优先级 运算符 说明
13 -, + 单目负、单目正
12 !, ~ 逻辑非、按位取反或补码
11 * , / , % 乘、除、取模
10 +, - 加、减
9 << , >> 按位左移、按位右移
8 < =, > =, < , > 小于或等于、大于或等于、小于、大于
7 == , != 等于、不等于
6 & 按位与
5 ^ 按位异或
4 | 按位或
3 && 逻辑与
2 || 逻辑或
1
=,+=,-=,*=,/=,%=,&=, ^=,
|=, <<=, >>=
赋值、运算且赋值
备注:这里的“优先级”,数值越高,优先级越高!
[root@localhost ~]# aa=$(( (11+3)*3/2 )) #虽然乘和除的优先级高于加,但是通过小括号可以调整运算优先级
[root@localhost ~]# bb=$(( 14%3 )) #14不能被3整除,余数是2
[root@localhost ~]# cc=$(( 1 && 0 )) #逻辑与运算只有想与的两边都是1,与的结果才是1,否则与的结果是0
2 变量测试与内容替换
例子1:测试x=${y-新值}
[root@localhost ~]# unset y #删除变量y
[root@localhost ~]# x=${y-new} #进行测试
[root@localhost ~]# echo $x
New #因为变量y不存在,所以x=new
[root@localhost ~]# y="" #给变量y赋值为空
[root@localhost ~]# x=${y-new} #进行测试
[root@localhost ~]# echo $x
[root@localhost ~]# y=old #给变量y赋值
[root@localhost ~]# x=${y-new} #进行测试
[root@localhost ~]# echo $x #结果:old