Bash脚本if else比较抛出[[Add: command not found错误
报错原因
报错[[Add: command not found的核心原因是bash语法要求:[[是条件判断的关键字,必须和后续的判断内容、运算符之间保留空格。
原代码第32行写的是if [["$operation" == "Add"]],[[和输入的变量值Add直接拼接成了[[Add,bash会把这个字符串当成要执行的命令查找,自然报命令不存在的错误,条件判断执行失败就会直接进入else分支。
另外原代码还有两个小问题:
- 减法函数里的输出文案错误,把减法的计算结果写成了“两个数的和”
- bash函数的
return关键字仅支持返回0-255范围的退出状态码,不适合用来返回计算结果,数值超过255就会出现溢出错误,计算结果直接通过echo输出即可。
修正后可运行代码
#!/bin/bash add() { first="${1}" second="${2}" result=$(expr "$first" + "$second") echo "The sum of two numbers is $result" } subtract() { first="${1}" second="${2}" result=$(expr "$first" - "$second") echo "The difference between two numbers is $result" } echo "[0] Add" echo "[1] Subtract" read operation echo "Enter Number One" read first echo "Enter Number Two" read second # 注意[[ 后、]]前、比较运算符==两侧都必须保留空格 if [[ "$operation" == "Add" || "$operation" == "0" ]] then add "$first" "$second" elif [[ "$operation" == "Subtract" || "$operation" == "1" ]] then subtract "$first" "$second" else echo "Invalid operation input" fi
运行验证
执行脚本输入对应参数后可正常触发加法逻辑:
root@Kumaraswamy:~# ./maths.sh [0] Add [1] Subtract Add Enter Number One 7 Enter Number Two 3 The sum of two numbers is 10
内容的提问来源于stack exchange,提问作者KUMARASWAMY B.G
相关产品推荐
相关产品推荐

