# let --help
let: let arg [arg ...]
id++, id-- variable post-increment, post-decrement
++id, --id variable pre-increment, pre-decrement
-, + unary minus, plus
!, ~ logical and bitwise negation
** exponentiation
*, /, % multiplication, division, remainder
+, - addition, subtraction
<<, >> left and right bitwise shifts
<=, >=, <, > comparison
==, != equality, inequality
& bitwise AND
^ bitwise XOR
| bitwise OR
&& logical AND
|| logical OR
expr ? expr : expr
conditional operator
=, *=, /=, %=,
+=, -=, <<=, >>=,
&=, ^=, |= assignment
在 Shell 脚本中,let 命令用于执行算术运算。它可以进行加、减、乘、除等基本运算以及位运算、比较运算等
注意事项:
变量不需要$
符号: 在let
中操作变量时,不需要在变量名前加$
符号。
双引号: 虽然let
可以不使用引号,但为了避免某些情况下的语法问题,建议将整个表达式放在双引号中
1.基本算术运算用法范例:
root@test:~# a=10
root@test:~# b=2
root@test:~# let "c=a+b"
root@test:~# echo $c
12
2.位移运算
root@test:~# let "c = 5 << 2"
root@test:~# echo $c
20
即5左移2位,相当于 5 * 2 ** 2
或者说二进制的 101 左移两位,用0补全变成 10100 ,即20
3.复合赋值运算
root@test:~# let "c = 20"
root@test:~# let "c += 10"
root@test:~# echo $c
30
root@test:~# let "c -= 20"
root@test:~# echo $c
10
root@test:~# let "c *= 2"
root@test:~# echo $c
20
root@test:~# let "c /= 2"
root@test:~# echo $c
10
root@test:~# let "c %= 3"
root@test:~# echo $c
1
4.比较运算等
root@test:~# let "d = (5 > 3)"
root@test:~# echo $d
1
即先判断括号内,成立则值为 1 ,不成立为 0
5.条件运算符
root@test:~# let "e = (3 < 5) ? 10 : 20"
root@test:~# echo $e
10
root@test:~# let "e = (6 < 5) ? 10 : 20"
root@test:~# echo $e
20
即先判断括号内的条件
条件为真则e取第一个值 10
条件为假则e取第二个值 20
6.逻辑运算
root@test:~# let "f = (1 && 0)"
root@test:~# echo $f
0
输出为0,因为逻辑与运算中有一个0,即假
逻辑运算符:
& bitwise AND 与
^ bitwise XOR 异或
| bitwise OR 或
&& logical AND 与
|| logical OR 或
# 真 1
# 假 0
# 与运算,全为真即为真
# 或运算 ,有一个为真即为真
# 异或,一真一假为真,相同为假