首页>教程>Linux 命令手册> Shell 内置命令与编程特性 >Linux let 命令 - shell 内置的算术运算命令

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 的内置的运算命令。它支持从基础的加减乘除到复杂位运算、逻辑运算等几乎全部的运算,是进行运算时必须掌握的一款工具。