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

Unix shell脚本运行出现Unexpected end of file错误如何解决?

报错根因定位

你遇到的Unexpected end of file错误核心原因是 until循环没有配套的闭合标识符done,你只检查了if语句的fi匹配,遗漏了循环结构的闭合要求:until搭配do开启循环体,必须在整个循环逻辑结束后加done收尾,你的脚本在esac之后就结束了,缺少对应的done。

其他需修正的语法问题

除了循环缺done外,脚本还存在多处语法错误会导致后续运行异常:

  • read用法错误:接收用户输入时变量名不需要加$符号,$仅用于变量取值场景。比如read "$mOption"要改为read mOption,所有read $变量名的写法都要去掉$
  • if判断语法错误:
    1. 方括号和内部内容必须用空格分隔,["$ATTACH"要改为[ "$ATTACH",末尾"y"]要改为"y" ]
    2. 多条件匹配的逻辑或写法错误,原写法"$ATTACH" = "Y"|"y"完全不成立,正确写法为[ "$ATTACH" = "Y" ] || [ "$ATTACH" = "y" ]
  • 变量赋值不允许有空格:userIn = q要改为userIn=q,等号左右不能有空格
  • 转义字符写反:echo -e "/n"里的换行符是\n不是/n
  • 变量对应错误:你读取用户选项用的是read mOption,但case判断的却是"$answer",两个变量完全不匹配,逻辑完全走不通,要统一为同一个变量
  • 功能匹配错误:E选项描述是「当前登录用户」,但你调用了pwd(显示当前工作目录),要显示登录用户应该改为whoami
  • 退出逻辑不匹配:你菜单里的退出选项是Q,但case里只有j|J分支处理退出逻辑,q|Q没有匹配分支,要把退出逻辑挪到q|Q分支下

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:36:04