bash中的算术运算:help let
+, -, *, /, %取模(取余), **(乘方)
实现算术运算:
(1) let var=算术表达式
[root@centos7 ~]#a=20 [root@centos7 ~]#b=30 [root@centos7 ~]#c=$a+$b [root@centos7 ~]#let c=$a+$b [root@centos7 ~]#echo $c 50
(2) var=$[算术表达式]——var=$[a+b] echo $var
image.png
(3) var=$((算术表达式)) ——echo $((a+b))
(4) var=$(expr arg1 arg2 arg3 ...)——支持数字运算
image.png (5) declare –i var = 数值
image.png
(6) echo ‘算术表达式’ | bc ——计算从1加到100
image.png
乘法符号有些场景中需要转义,如*
bash有内建的随机数生成器:$RANDOM(0-32767)
echo $[$RANDOM%50] :0-49之间随机数
赋值
增强型赋值: +=, -=, *=, /=, %=
let varOPERvalue
例如:let count+=3 自加3后自赋值 ——let a+= 5 相当于a=a+5
自增,自减:
let var+=1
let var++ ——
image.png
image.png
let var-=1
let var-
逻辑运算
true, false 1, 0
与: 全是1结果为1,有0则是0
1 与 1 = 1 1 与 0 = 0 0 与 1 = 0 0 与 0 = 0
或:有1则为1,全0则是0
1 或 1 = 1
1 或 0 = 1
0 或 1 = 1
0 或 0 = 0
非:!就是取反
! 1 = 0
! 0 = 1
短路运算
短路与 第一个为0,结果必定为0 ——cmd1 &&cmd2:cmd1为假的时候,不去执行后面的命令,结果也为假
第一个为1,第二个必须要参与运算 ——cmd1 && cmd2:cmd1为真的时候,去执行cmd2,cmd2为真的时候,结果为真,cmd为假的时候,结果为假
短路或 第一个为1,结果必定为1——cmd1 || cmd2:cmd1为真的时候,不去执行cmd2,结果为真
cmd2第一个为0,第二个必须要参与运算 ——cmd1为假的时候,cmd2为真的时候,去执行cmd2 ,结果为真,cmd2为假的时候,结果为假
异或:^ 异或的两个值,相同为假,不同为真
例子:当a=5,b=8时,通过异或实现a与b的互换
image.png
条件测试
(1) 判断某需求是否满足,需要由测试机制来实现 专用的测试表达式需要由测试命令辅助完成测试过程
(2) 测试命令: test EXPRESSION
image.png
例1:如果比较两个值相等,则输出结果显示为'equal',可以采用短路与来实现 a=xcv,b=xcv
image.png
例2:此时,改变b的值,让其不等于a,那么采用短路或实现输出结果为'not equal'
image.png
[ EXPRESSION ] =等价test变量
image.png
在test测试用法中空字符等同于没有赋值,而给变量赋值0或是空格,就是赋值输出结果为真
image.png
test:
-n:非空为真判断变量是否为空一定要加双引号
image.png
-z:空为真当给sdc赋值后,不再为空,那么空为假,则不执行下面的命令
image.png
数值测试:
-gt 是否大于
-ge 是否大于等于
-eq 是否等于
-ne 是否不等于
-lt 是否小于
-le 是否小于等于
例1:
image.png
例2:
image.png
例3:读取磁盘分区利用率,如果利用率大于10则报警
image.png
字符串测试:
"在没有赋值的时候,给字符串加上引号"
== 是否等于 > ascii码是否大于ascii码
< 是否小于 != 是否不等于
=~ 左侧字符串是否能够被右侧的PATTERN所匹配 注意: 此表达式一般用于[[ ]]中扩展的正则表达式
[[ EXPRESSION ]] ——支持正则表达式
image.png
注意:EXPRESSION前后必须有空白字符,在正则表达式中,字符串不用加引号
image.png