shell中的运算符

算术运算

运算符 举例 结果
+(加运算) 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 ] 两个条件满足一个就行

posted @ 2023-02-23 14:24  厚礼蝎  阅读(13)  评论(0编辑  收藏  举报