Linux let命令详解

let 是 Bash 的一个内置命令,用于在 Shell 中进行整数运算。虽然它不是 POSIX 标准的一部分,且在现代化脚本中常被 (( ... )) 替代,但了解它依然有助于理解旧脚本或进行一些简单的操作。

📜 基本语法与规则

  • 基础语法 :let 表达式。计算后,其结果不会自动显示,通常需配合 echo 打印。如果表达式包含空格或 |, &, > 等特殊字符,必须用双引号(" ")或单引号(' ')将其括起来。
  • 变量引用 :在 let 命令中引用变量时,不需要加 $ 符号。例如,let "sum = a + b" 能直接识别变量 a 和 b 的值。
  • 运算范围 :let 仅支持整数运算 。当它处理除法时,结果会直接截断取整,不保留小数。若需浮点运算,可用 bc 或 awk 工具。

➕ 支持的运算符

let 支持一套丰富的算术、逻辑和位运算符,优先级从高到低排列如下:

优先级 运算符类型 运算符 描述 示例
自增/自减 var++ var-- 后置自增/减:先返回变量值,再执行运算。 let b=a++ (若a=5,则b=5, a=6)
++var --var 前置自增/减:先执行运算,再返回新值。 let b=++a (若a=5,则a=6, b=6)
一元运算 +, -, !, ~ 正负号、逻辑非、按位取反。 let "b = -a"
幂运算 ** 乘方。 let "b = 2 ** 3" (结果为8)
乘除取模 *, /, % 乘法、除法、取模。 let "b = 10 % 3" (结果为1)
加减法 +, - 加法、减法。 let "b = a + 5"
移位 <<, >> 按位左移、右移。 let "b = a << 2"
比较 <, >, <=, >= 小于、大于、小于等于、大于等于。 let "b = a > 3" (若a>3,则b=1)
(不)等于 ==, != 等于、不等于。 let "b = a == 5" (若a==5,则b=1)
按位与/异或/或 &, ^, 对数字的二进制表示进行运算。
逻辑与/或 &&,
三元运算符 expr?expr:expr 条件判断,若为真取第一个值,否则取第二个。 let "b = a>0 ? a : -a"
- 复合赋值 =, *=, /=, %=, +=, -=, <<=, >>=, &=, ^=, = 运算并赋值。

💡 常用示例

  • 变量自增 :使用 let "var += 1" 或 let "var++" 语句即可。

bash

复制代码
#!/bin/bash
复制代码
count=0
复制代码
for i in {1..5}; do
复制代码
    let "count++"
复制代码
done
复制代码
echo "Total count: $count" #输出:Total count: 5
  • 多表达式组合 :let 允许用空格分隔多个表达式,并依次计算。

bash

复制代码
#计算x+y的和,再赋给z
复制代码
x=10; y=20; z=0
复制代码
let sum=x+y z=sum
复制代码
echo $sum $z #输出:30 30
相关推荐
王二端茶倒水11 分钟前
智慧园区网络运营:认证、分权、运维和安全闭环
运维·物联网·架构
爱就是恒久忍耐13 分钟前
现代CMake的build方式
linux·运维·服务器
三84418 分钟前
重定向/管道符/通配符/转义字符/VI/VIM
运维·服务器
qq_谁赞成_谁反对33 分钟前
甲方IT的成长之路--nginx实战--2604
服务器·数据库·nginx
fofantasy42 分钟前
NSK LH25FL 升级至 NH25EM 技术规格指南
服务器·网络·数据库·经验分享·规格说明书
facaixxx20241 小时前
雨云服务器区域选择终极指南:地域速度、节点带宽、延迟及防御说明
服务器·云服务器·雨云服务器·云服务器区域·云服务器地域·云服务器节点
小坏蛋至尊宝1 小时前
如何优化文件传输的性能?
运维·服务器
小羽网安1 小时前
2026年服务器安全防护实战:从被DDoS到完整防护体系搭建
服务器·安全·ddos
古城小栈1 小时前
Python 的主流Ai框架为什么优先适配 Linux 系统?
linux·人工智能·python
爱学习的程序媛1 小时前
DevOps 深度解析:从文化理念到落地实践
运维·devops