在Bash中实现加减乘除基础运算的脚本问题求助
Bash四则运算脚本修复方案
你现有加法逻辑存在两处语法错误:
- 算术扩展语法
$((...))中$和双括号之间不能留有空格 - 不应该混用
expr命令和原生算术扩展语法,二者选其一即可,原生$((...))不需要额外调用外部命令,运行效率更高
完整可运行脚本
#!/bin/bash echo "请输入两个数字:" read -p "第一个数字: " a read -p "第二个数字: " b # 校验输入是否为合法数字(支持整数和小数) if ! [[ $a =~ ^[0-9]+(\.[0-9]+)?$ && $b =~ ^[0-9]+(\.[0-9]+)?$ ]]; then echo "错误:请输入合法数字" exit 1 fi select operation in 加法 减法 乘法 除法 do case $operation in "加法") res=$(echo "$a + $b" | bc) echo "加法运算结果= $res" break ;; "减法") res=$(echo "$a - $b" | bc) echo "减法运算结果= $res" break ;; "乘法") res=$(echo "$a * $b" | bc) echo "乘法运算结果= $res" break ;; "除法") if [ $(echo "$b == 0" | bc) -eq 1 ]; then echo "错误:除数不能为0" exit 1 fi # scale参数控制保留小数位数,可按需修改 res=$(echo "scale=2; $a / $b" | bc) echo "除法运算结果= $res" break ;; *) echo "请选择1-4之间的有效操作序号" ;; esac done
补充说明
- 如果仅需要处理整数运算,可以直接用
$((a + b))格式,不需要调用bc命令 - 脚本已增加输入合法性校验、除数为0异常处理逻辑,避免运行时报错
内容的提问来源于stack exchange,提问作者Mohamed ali Lemkecher
相关产品推荐
相关产品推荐

