Linux let 命令 - shell 内置的算术运算命令
let 命令(英文全称为 let「让、允许」)是 Linux / Unix 系统中的 shell 内置的算术运算命令,主要功能是对 Shell 变量进行算术运算、位运算、逻辑运算等操作,是在 Shell 脚本中处理数值计算的一款命令。
[!NOTE]
let命令的运算优先级规则遵循 C 语言的运算符优先级规则。
let 命令语法
let 命令是 shell 内置的算术运算命令,其基本的语法结构非常的简单:
let 表达式 [表达式 ...]
语法中各部分的解释:
表达式:必选的内容,一个或多个算术表达式,多个表达式之间使用空格分隔开来[表达式 ...]:可选的内容,后面追加的多个算术表达式,所有的表达式会按顺序依次执行
关键的一些事项说明:
- 表达式中可直接使用 Shell 变量名,不需要使用
$符号来引用变量,如let a=b+1 - 为了避免 Shell 解析错误,包含空格、特殊运算符的表达式,建议用单引号 / 双引号包裹
- 运算遵循 C 语言的运算符优先级,括号内的子表达式优先计算
let 命令使用示例
所有示例基于 Bash 环境执行,覆盖 let 命令的核心用法,包含选项说明、功能说明和执行结果。
基础算术运算
如下给出一些加法、减法、乘法、除法基础算术运算的示例:
# 定义变量
num1=10
num2=3
# 执行 let 运算
let sum=num1+num2 sub=num1-num2 mul=num1*num2 div=num1/num2
# 输出结果
echo "加法:$sum 减法:$sub 乘法:$mul 除法:$div"
变量自增 / 自减运算
使用 ++ 自增运算符、-- 自减运算符,来实现自增或自减运算:
# 初始变量
a=5
# 后置自增(先取值,再+1)
let a++
echo "后置自增:$a"
# 前置自减(先-1,再取值)
let --a
echo "前置自减:$a"
[!NOTE]
++、--即支持前置写法也支持后置写法,前置是先自增或自减后取值,后置是先取值后
位运算
使用 &、|、^、<<、>> 位运算符进行位运算:
let bit_and=5&3 bit_or=5|3 bit_shift=4<<1
echo "位与:$bit_and 位或:$bit_or 左移1位:$bit_shift"
逻辑运算
使用 &&(逻辑与)、||(逻辑或)运算符进行逻辑运算:
let logic=10>5 && 3<6
echo "逻辑运算结果:$logic"
let 命令运算符
let 命令支持算术运算、位运算、逻辑运算等非常多的运算,如下给出支持的所有的运算:
| 运算符格式 | 运算符说明 | 运算规则 |
|---|---|---|
变量++ | 后置自增 | 先使用变量值,再将变量 +1 |
变量-- | 后置自减 | 先使用变量值,再将变量 -1 |
++变量 | 前置自增 | 先将变量 +1,再使用变量值 |
--变量 | 前置自减 | 先将变量 -1,再使用变量值 |
- | 一元负号 | 取数值的相反数 |
+ | 一元正号 | 保持数值的原值 |
! | 逻辑非 | 真变假(1→0),假变真(0→1) |
~ | 按位取反 | 对二进制位逐位进行取反 |
** | 幂运算 | 计算数值的乘方(如 2**3=8) |
* | 乘法 | 两个数相乘 |
/ | 除法 | 两个数相除,结果会舍去余数 |
% | 取余 | 计算两个数相除的余数 |
+ | 加法 | 两个数相加 |
- | 减法 | 两个数相减 |
<< | 左位移 | 把二进制位向左移动,右侧的位补 0 |
>> | 右位移 | 把二进制位向右移动,左侧的位补符号位 |
<= | 小于等于 | 如果判断成立返回 1,否则返回 0 |
>= | 大于等于 | 如果判断成立返回 1,否则返回 0 |
< | 小于 | 如果判断成立返回 1,否则返回 0 |
> | 大于 | 如果判断成立返回 1,否则返回 0 |
== | 相等 | 如果判断成立返回 1,否则返回 0 |
!= | 不等 | 如果判断成立返回 1,否则返回 0 |
& | 按位与 | 把二进制位逐位进行与运算 |
^ | 按位异或 | 把二进制位逐位进行异或运算 |
\| | 按位或 | 把二进制位逐位进行或运算 |
&& | 逻辑与 | 如果两边的值都为真则返回 1,否则返回 0 |
\|\| | 逻辑或 | 至少一边为真则返回 1,否则返回 0 |
? : | 三元条件 | 表达式?表达式真时的取值:表达式假时的取值 |
= | 赋值 | 将右侧的值赋给左侧的变量 |
*= | 乘赋值 | 变量=变量*值 |
/= | 除赋值 | 变量=变量/值 |
%= | 取余赋值 | 变量=变量%值 |
+= | 加赋值 | 变量=变量+值 |
-= | 减赋值 | 变量=变量-值 |
<<= | 左移赋值 | 变量=变量<<值 |
>>= | 右移赋值 | 变量=变量>>值 |
&= | 位与赋值 | 变量=变量&值 |
^= | 位异或赋值 | 变量=变量^值 |
\| = | 位或赋值 | 变量=变量|值 |
, | 逗号 | 依次执行多个表达式,取最后一个表达式的结果 |
结语
let 命令是 Linux / Unix 系统中 shell 的内置的运算命令。它支持从基础的加减乘除到复杂位运算、逻辑运算等几乎全部的运算,是进行运算时必须掌握的一款工具。