linux shell 编程:算术运算符 作者:马育民 • 2025-11-20 11:25 • 阅读:10001 需要掌握:[linux shell 编程:实现运算(expr、$((...))、bc计算浮点数)](https://www.malaoshi.top/show_1GW2GCrHohBY.html "linux shell 编程:实现运算(expr、$((...))、bc计算浮点数)") # 介绍 在 Shell 编程中,算术运算主要分为 **整数运算** 和 **浮点数运算** 两类,Shell 本身 **仅支持整数运算**,浮点数需借助外部工具(如 `bc`、`awk`)实现。 # 整数算术运算 ### 使用 `$((...))`(推荐) 这是最常用的整数运算方式,支持 `+`、`-`、`*`、`/`、`%`(取模)、`**`(幂运算)等: ```bash #!/bin/bash a=10 b=3 # 加法 echo "$a + $b = $((a + b))" # 输出:10 + 3 = 13 # 减法 echo "$a - $b = $((a - b))" # 输出:10 - 3 = 7 # 乘法(注意:* 无需转义) echo "$a * $b = $((a * b))" # 输出:10 * 3 = 30 # 除法(整数除法,向下取整) echo "$a / $b = $((a / b))" # 输出:10 / 3 = 3 # 取模(余数) echo "$a % $b = $((a % b))" # 输出:10 % 3 = 1 # 幂运算 echo "$a ** $b = $((a ** b))" # 输出:10 ** 3 = 1000 # 复合运算(赋值+运算) ((a += 5)) # 等价于 a = a + 5 echo "a += 5 后:$a" # 输出:a += 5 后:15 ``` ### 使用 `expr` 命令(老式方法) `expr` 是早期 Shell 的算术工具,语法较繁琐(运算符需空格分隔,`*` 需转义): ```bash #!/bin/bash m=15 n=4 # 加法 sum=$(expr $m + $n) echo "$m + $n = $sum" # 输出:15 + 4 = 19 # 乘法(* 需转义) product=$(expr $m \* $n) echo "$m * $n = $product" # 输出:15 * 4 = 60 ``` # 浮点数算术运算(需外部工具) Shell 本身不支持浮点数,需借助 `bc`(计算器工具)或 `awk` 实现: ### 1. 使用 `bc` 工具 `bc` 支持浮点数运算,通过 `scale` 设置小数位数: ```bash #!/bin/bash num1=3.14 num2=2.5 # 加法(保留2位小数) echo "scale=2; $num1 + $num2" | bc # 输出:5.64 # 乘法(保留3位小数) echo "scale=3; $num1 * $num2" | bc # 输出:7.850 # 除法(保留4位小数) echo "scale=4; $num1 / $num2" | bc # 输出:1.2560 ``` ### 2. 使用 `awk` 工具 `awk` 内置浮点数支持,适合复杂运算: ```bash #!/bin/bash a=5.5 b=2.2 # 计算 (a + b) * 2 result=$(awk -v x="$a" -v y="$b" 'BEGIN{print (x + y) * 2}') echo "(a + b) * 2 = $result" # 输出:(a + b) * 2 = 15.4 ``` # 总结 1. **整数运算**:优先用 `$((...))`(简洁高效),其次是 `let`;老式脚本可能用 `expr`。 2. **浮点数运算**:用 `bc`(简单运算)或 `awk`(复杂运算),通过 `scale` 控制小数位数。 3. **运算符支持**:整数支持 `+`、`-`、`*`、`/`、`%`、`**`;浮点数需借助外部工具实现所有运算。 根据运算类型选择对应方法,整数运算用 Shell 内置语法,浮点数运算借助 `bc` 或 `awk` 即可满足需求! 原文出处:http://malaoshi.top/show_1GW2GDFx9ga7.html