Linux中Shell变量加减法最常用推荐双括号$((...))语法,支持整数运算、变量直用、无需转义;expr命令需空格分隔且符号转义;注意除法截断、非数字变0、小数须用bc/awk。

Linux中Shell变量做加减法,最常用、最推荐的方式是使用双括号 $((...)) 语法。它简洁、安全、支持变量直接参与运算,且无需转义特殊符号。
用 $((...)) 进行加减运算
这是 Bash 内置的算术扩展,只支持整数,但写法自然、效率高。
- 加法:
a=5; b=3; echo $((a + b))→ 输出 8 - 减法:
echo $((a - b))→ 输出 2 - 可混合变量和数字:
result=$((x + 10 - y)) - 支持赋值后立即使用:
sum=$((a + b)); echo $sum
用 expr 命令做加减(兼容老脚本)
expr 是外部命令,需注意格式:**每个元素之间必须有空格**,且 *、(、) 等符号要转义。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 加法:
expr $a + $b(不能写成expr $a+$b) - 减法:
expr $a - $b - 乘法必须转义:
expr $a \* $b - 结果需用反引号或
$()捕获:sum=$(expr $a + $b)
注意事项和常见错误
避免踩坑,关键点就几个:
-
$((...))中变量名可不加$(如$((a+b))),但加了也不报错 - 除法结果是整数截断,
$((5/2))得 2,不是 2.5 - 小数运算不能用上面两种方法,得靠
bc或awk,比如echo "scale=2; 5/2" | bc - 如果变量含非数字字符,
$((...))会当作 0 处理,可能静默出错;建议先校验输入
一个实用的小例子
交互式加减计算器片段:
read -p "输入第一个数: " xread -p "输入第二个数: " y
echo "$x + $y = $(($x + $y))"
echo "$x - $y = $(($x - $y))"

















