如何修复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
相关产品推荐
相关产品推荐

