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

如何修复Shell脚本提示syntax error: unexpected end of file的问题

错误原因及修复方案

你遇到的unexpected end of file报错核心是Shell的if分支结构没有闭合,同时代码还存在其他几处语法问题:

  • 问题1:if条件结构缺少结尾的fi关键字,Shell解析时找不到分支结束标记,直接读到文件末尾就会抛出该错误
  • 问题2:Shebang声明的是#!/bin/sh,但使用了Bash专属的[[ ]]条件判断语法,部分系统的sh环境不兼容该写法
  • 问题3:wget命令行存在语法错误:URL前后多了无效的反引号,也没有正确指定下载后的保存路径
  • 问题4:mkdir ~/.deb没有加-p参数,如果目录已经存在会抛出错误中断脚本运行

修复后完整代码

#!/bin/bash

clear

if [[ "$1" == "donut" ]]; then
    mkdir -p ~/.deb
    wget "https://github.com/packageash/repo/blob/main/Donut.deb?raw=true" -P ~/.deb
    dpkg --install ~/.deb/Donut.deb
    rm ~/.deb/Donut.deb
elif [[ "$1" == "nodonut" ]]; then
    sudo rm /usr/local/bin/donut
else
    echo "Nothing Picked To Install."
fi

额外说明

  • 如果你需要兼容sh环境,把[[ ]]替换为[ ],同时注意等号左右保留空格即可:[ "$1" = "donut" ]
  • 下载时如果遇到网络不稳定,可以给wget加-c参数支持断点续传

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:00:01