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
相关产品推荐
相关产品推荐

