You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash解释器持续报变量声明错误,简易计算器脚本求助

Bash计算器脚本变量声明错误的原因及修复方案

你的脚本报错的核心原因是Bash变量赋值的语法错误:在Bash中给变量赋值时,=的两边绝对不能有空格。

看你代码里的这些行:

res = $((a + b))

Bash会把res识别为要执行的命令,=和后面的表达式会被当成命令的参数,自然会抛出"command not found"之类的变量/命令错误——这就是你遇到的变量声明错误的根源。

修复后的if版本脚本

#!/bin/bash 

# Take user Input 
echo "Enter Two numbers : "
read a 
read b 

# Input type of operation 
echo "Enter Choice :"
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo "4. Division"
read ch 

if (($ch==1))
then
  res=$((a + b))
elif (($ch==2))
then
  res=$((a - b))
elif (($ch==3))
then
  res=$((a * b))
elif (($ch==4))
then
  res=$((a / b))
else
  echo ERROR
  exit 1 # 避免后续输出未定义的res变量
fi
echo Result is $res

修复后的case版本脚本

如果你想用case语句实现,同样要注意赋值时=两边无空格:

#!/bin/bash 

echo "Enter Two numbers : "
read a 
read b 

echo "Enter Choice :"
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo "4. Division"
read ch 

case $ch in
  1) res=$((a + b)) ;;
  2) res=$((a - b)) ;;
  3) res=$((a * b)) ;;
  4) res=$((a / b)) ;;
  *) echo ERROR; exit 1 ;;
esac
echo Result is $res

额外补充两点注意事项:

  • 脚本第一行的# !/bin/bash要改成#!/bin/bash,去掉#和!之间的空格,否则可能无法正确指定解释器。
  • 当用户输入无效选项时,建议加上exit 1退出脚本,避免后续输出未定义的res变量导致额外的错误提示。

内容的提问来源于stack exchange,提问作者HaDi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:24:59