**bash中的算术运算:
+, -, *, /, %取模(取余), (乘方)
乘法符号有些场景中需要转义
实现算术运算:
(1) let var=算术表达式
(2) var=$[算术表达式]
(3) var=$((算术表达式))
(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc
内建的随机数生成器变量:
$RANDOM 取值范围:0-32767
范例:
#生成 0 - 49 之间随机数
[root@server02 ~]# echo $[$RANDOM%50]
44
[root@server02 ~]# echo $[$RANDOM%50]
23
[root@server02 ~]# echo $[$RANDOM%50]
7
[root@server02 ~]# echo $[$RANDOM%50]
24
#随机字体颜色
[root@server02 ~]# echo -e "\033[1;$[RANDOM%7+31]liujunjun\033[0m"
iujunjun
增强型赋值:
+= i+=10 相当于 i=i+10
-= i-=j 相当于 i=i-j
*=
/=
%=
++ i++,++i 相当于 i=i+1
-- i--,--i 相当于 i=i-1
格式:
let varOPERvalue
范例:
#自加3后自赋值
let count+=3
[root@server02 ~]# i=10
[root@server02 ~]# let i+=20
[root@server02 ~]# echo $i
30
[root@server02 ~]# j=20
[root@server02 ~]# let i*=j
[root@server02 ~]# echo $i
600
范例:
#自增,自减
let var+=1
let var++
let var-=1
let var--
[root@server02 ~]# unset i j ; i=1; let j=i++; echo "i=$i,j=$j"
i=2,j=1
[root@server02 ~]# unset i j ; i=1; let j=++i; echo "i=$i,j=$j"
i=2,j=2
逻辑运算
true, false
1, 0
与:&
1 与 1 = 1
1 与 0 = 0
0 与 1 = 0
0 与 0 = 0
或:|
1 或 1 = 1
1 或 0 = 1
0 或 1 = 1
0 或 0 = 0
非:!
! 1 = 0 ! true
! 0 = 1 ! false
异或:^
异或的两个值,相同为假,不同为真
[root@server02 ~]# true
[root@server02 ~]# echo $?
0
[root@server02 ~]# false
[root@server02 ~]# echo $?
1
[root@server02 ~]# ! true
[root@server02 ~]# echo $?
1
[root@server02 ~]# ! false
[root@server02 ~]# echo $?
0
[root@server02 ~]# x=10;y=20;temp=$x;x=$y;y=$temp;echo x=$x,y=$y
x=20,y=10
[root@server02 ~]# x=10;y=20;x=$[x^y];y=$[x^y];x=$[x^y];echo x=$x,y=$y
x=20,y=10
短路运算
短路与
CMD1 短路与 CMD2
第一个CMD1结果为 0 (假 ),总的结果必定为0,因此不需要执行CMD2
第一个CMD1结果为 1 (真),第二个CMD2必须要参与运算,才能得到最终的结果
短路或
CMD1 短路或 CMD2
第一个CMD1结果为1 (真),总的结果必定为1,因此不需要执行CMD2
第一个CMD1结果为0 (假 ),第二个CMD2 必须要参与运算,,才能得到最终的结果