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

开发BASH应用菜单时遭遇`syntax error near unexpected token 'fi'`错误求助

问题分析与修复

你的错误根源是函数调用语法错误:在if分支里你写的a()和b()是函数定义的语法,而调用函数只需要直接写函数名即可,不需要加括号。

除此之外,还有两个可以优化的点:

  • [ $input == "1" ]中的==是Bash扩展写法,POSIX标准的test命令用=;如果要保留==,建议改用Bash的扩展测试[[ $input == "1" ]],它更安全(比如变量为空时不会报错)
  • read input加上-r选项,避免输入中的反斜杠被自动转义

修正后的完整代码

chmod u+x main.sh

menu() {
  clear
  echo 1. Option A
  echo 2. Option B
  read -r input
  if [[ $input == "1" ]]; then
    a
  fi
  if [[ $input == "2" ]]; then
    b
  fi
}

a(){
  # 这里写你的代码
  echo "执行选项A的逻辑"
}

b(){
  # 这里写你的代码
  echo "执行选项B的逻辑"
}

menu

关键修正点

  • 将a()改为a,b()改为b,这才是正确的函数调用方式
  • 用[[ ... ]]替代[ ... ],提升脚本的健壮性
  • 给read添加-r选项,符合最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:35:54