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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:48:16