Contents
1.19. let运算符¶
$[]等同于$(())等同于let a=$a+1 (let a++) # $[]表示形式告诉shell求中括号中的表达式的值
~var # 按位取反运算符,把var中所有的二进制为1的变为0,为0的变为1
var\<<str # 左移运算符,把var中的二进制位向左移动str位,忽略最左端移出的各位,最右端的各位上补上0值,每做一次按位左移就有var乘2
var>>str # 右移运算符,把var中所有的二进制位向右移动str位,忽略最右移出的各位,最左的各位上补0,每次做一次右移就有实现var除以2
var&str # 与比较运算符,var和str对应位,对于每个二进制来说,如果二都为1,结果为1.否则为0
var^str # 异或运算符,比较var和str对应位,对于二进制来说如果二者互补,结果为1,否则为0var|str # 或运算符,比较var和str的对应位,对于每个二进制来说,如二都该位有一个1或都是1,结果为1,否则为0
运算符优先级
级别 运算符 说明
1 =,+=,-=,/=,%=,*=,&=,^=,|=,<<=,>>= # 赋值运算符
2 || # 逻辑或——只有当前一个命令执行失败时才执行后一个命令。
3 && # 逻辑与——只有当前一个命令执行成功时才执行后一个命令。
4 | # 按位或
5 ^ # 按位异或
6 & # 按位与
7 ==,!= # 等于/不等于
8 <=,>=,<,> # 小于或等于/大于或等于/小于/大于
9 \<<,>> # 按位左移/按位右移 (无转意符号)
10 +,- # 加减
11 *,/,% # 乘,除,取余
12 ! ,~ # 逻辑非,按位取反或补码
13 -,+ # 正负
逻辑操作符
在[]中使用逻辑操作符 在[[]]中使用逻辑操作符 说明
-a && and与,两端都为真,则真
-o || or或,两端有一个为真则真 ! ! not非,相反则为真
数学运算
$(( )) # 整数运算 #r=$((2+5*8))
expr 算术式 #r=`expr 4 + 5`
$[算术式] #r=$[4+5]
declare -i 变量=算术式 #declare -i r=8+16
let 算术式 #let r=8+16
+ - * / ** # 分別为 "加、減、乘、除、密运算"
& | ^ ! # 分別为 "AND、OR、XOR、NOT" 运算
% # 余数运算