算术运算
运算符 | 举例 | 结果 |
---|---|---|
+(加运算) | 3+5 | 8 |
-(减运算) | 5-3 | 2 |
*(乘运算) | 5*3 | 15 |
/(除运算) | 8/3 | 2 |
%(取余运算) | 15%4 | 3 |
**(幂运算) | 5**3 | 125 |
bash中的算术运算:help let
+, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义
实现算术运算:
(1) let var=算术表达式
(2) var=\([算术表达式] (3) var=\)((算术表达式))
(4) var=$(expr arg1 arg2 arg3 ...)
(5) declare –i var = 数值
(6) echo ‘算术表达式’ | bc
expr:通用的表达式计算命令
表达式中参数与操作符必须以空格分开
表达式中的运算可以是算术运算,比较运算,字符串运算和逻辑运算。
$ expr 5 % 3
$ expr 5 \* 3 # 乘法符号必须被转义
$ expr \( 2 + 5 \) \* 2 – 3 # 括号必须被转义
bash有内建的随机数生成器变量:$RANDOM(0-32767)
示例:生成 0 - 49 之间随机数
echo $[$RANDOM%50]
#先赋值,再自加
$ a=1; b=$((a++));echo $a $b
2 1
#先自加,再赋值
$ a=1; b=$((++a));echo $a $b
2 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
短路运算
短路与 && 遇到假就停止执行
第一个为0,结果必定为0 cmd1&&cmd2 cmd1假就不会执行cmd2
第一个为1,第二个必须要参与运算 cmd1为真则必然会执行cmd2短路或 || 遇到真则停止执行
第一个为1,结果必定为1
第一个为0,第二个必须要参与运算
异或:^
异或的两个值,相同为假,不同为真
#通过异或,达到交换数据的功能
x=10;y=20;x=$[x^y];y=$[x^y];x=$[x^y];echo "x=$x,y=$y"
x=20,y=10
并且
-a
: and
[ c1 -a c2 ]
两条件必须同时满足
或者
-o
: or
[ c1 -o c2 ]
两个条件满足一个就行