SHELL 中的运算

运算方式及运算符号

运算符号                      意义( * 标示常用)
+,-                          加法,减法
*,/,%                        乘法,除法,取余
**                           幂运算
++ , --                      自增加,自减少
<,<=,>,>=                    比较符号
= , += , -= , *= , /= , %=         赋值运算
例如 a+=1 相当于 a=a+1

SHELL 中常用的运算命令

运算操作与运算命令          含义
(())                     用于整数运算
let                      用于整数运算,与 (()) 类似
expr                     用于整数运算,功能相对较多
bc                       inux 下的计算器,适合整数及小数运算
$[]                      用于整数运算

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

vim  test.sh
#!/bin/bash
for ((i=1;i<10;i++))
do
    echo $i
done

这里写图片描述
例:编写脚本
1.请用运算和已经学过的 shell 语句写一个 10 秒倒计时的脚本

#!/bin/bash
for ((i=10;i>0;i--))   ###从10数到1
do
    AA=$[$i/60]  ####除60秒
    BB=$[$i%60]  ###对60取余
    echo -ne "\r$AA:$BB   \r"
    sleep 1   ###每隔1秒显示一次
done

2.请用运算和已经学过的 shell 语句写一个 1 分 10 秒倒计时的脚本
第一种方法

PRINT_MESSAGE()    ###定义一个每隔一秒显示的函数
{
     echo -n "$MIN:$SEC"
     sleep 1
     echo -ne "\r     \r"
}
MIN=1     ###定义1分钟
SEC=10    ###定义10秒
for ((;SEC>=0;SEC--))
do
       [ "$SEC" = "0" -a "$MIN" = "0" ]&& exit 0
       [ "$SEC" = "0" -a "$MIN" -gt "0" ]&&{
       PRINT_MESSAGE    ###调用函数
       ((MIN--))
       SEC=59
       }
       PRINT_MESSAGE   ###调用函数
done

第二种方法

#!/bin/bash
read -p "please a minute: " m   ###输入分钟数
read -p "please a second: " s   ###输入秒数
j=$[m*60+s]
for ((i=j;i>0;i--))
do
    AA=$[$i/60]
    BB=$[$i%60]
    echo -ne "\r$AA:$BB   \r"
    sleep 1
done

3.利用以上命令制作一个计算器要求如下
执行 Calculator.sh 后显示
请输入您要操作的数字:
请输入要操作的运算:
请输入要操作的第二个数字 :
执行后显示操作后的数值

#!/bin/bash
read -p "please input the first number: " NUM_1
read -p "please input the action: "  ACTION
read -p "please input the second number:" NUM_2
bc <<EOF
$NUM_1$ACTION$NUM_2
EOF

这里写图片描述

Shell 脚本中实现加减乘除四则运算,主要依赖于几种不同的语法结构和命令工具,具体方法如下: ### 使用 `$((...))` 进行整数运算 Shell 提供了内置的算术运算符 `$((...))`,支持加减乘除等基本运算。这种方式适用于整数运算,且语法简洁直观。例如: ```bash A=$((2 + 3)) echo "加法: $A" # 输出 5 B=$((6 / 2)) echo "除法: $B" # 输出 3 ``` 该方式支持变量引用,也可以在表达式中直接使用变量名,无需 `$` 前缀: ```bash val1=4 val2=2 echo $((val1 * val2)) # 输出 8 ``` ### 使用 `$[...]`(已不推荐) 早期的 Shell 版本中支持 `$[...]` 语法进行整数运算,例如: ```bash A1=$[2 + 3] echo "加法: $A1" # 输出 5 ``` 尽管在某些系统中仍可使用,但此语法已逐渐被 `$((...))` 取代,不建议在新脚本中使用。 ### 使用 `expr` 命令进行运算 `expr` 是一个外部命令,适用于变量之间的运算,尤其适合在脚本中处理动态输入的场景: ```bash K1=5 K2=3 A3=$(expr $K1 + $K2) echo "加法: $A3" # 输出 8 ``` 需要注意的是,`expr` 在进行乘法运算时需使用 `\*` 转义字符: ```bash B3=$(expr $K1 \* $K2) echo "乘法: $B3" # 输出 15 ``` ### 使用 `bc` 命令进行浮点运算 Shell 本身不支持浮点运算,但可以通过 `bc` 命令实现。`bc` 是一个支持高精度计算的计算器,可通过 `scale` 参数控制小数位数: ```bash x=8 y=$(echo "scale=6; $x * 3 / 7" | bc) echo "浮点运算结果: $y" # 输出 3.428571 ``` ### 使用 `awk` 实现浮点运算 `awk` 同样可以用于浮点运算,并支持格式化输出: ```bash val1=4 val2=3 result=$(awk -v a=$val1 -v b=$val2 'BEGIN {printf("%.2f\n", b / a)}') echo "除法: $result" # 输出 0.75 ``` ### 示例脚本整合 以下是一个整合上述多种方法的完整示例脚本: ```bash #!/bin/bash # 使用 $((...)) 进行整数运算 A=$((2 + 3)) echo "加法: $A" B=$((6 / 2)) echo "除法: $B" # 使用 expr 进行变量运算 K1=5 K2=3 A3=$(expr $K1 + $K2) echo "加法: $A3" B3=$(expr $K1 \* $K2) echo "乘法: $B3" # 使用 bc 进行浮点运算 x=8 y=$(echo "scale=6; $x * 3 / 7" | bc) echo "浮点运算结果: $y" # 使用 awk 进行浮点运算 result=$(awk -v a=$val1 -v b=$val2 'BEGIN {printf("%.2f\n", b / a)}') echo "除法: $result" ``` ### 注意事项 - 所有上述方法中,`$((...))` 是最推荐的方式,因其为 Shell 内置,效率高且语法清晰。 - 对于浮点运算,`bc` 和 `awk` 是常用工具,其中 `bc` 更适合高精度计算,而 `awk` 更适合格式化输出。 - `expr` 和 `$[...]` 语法虽仍可用,但已被现代 Shell 所淘汰,建议避免使用[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值