解决执行Shell脚本报错syntax error: unexpected end of file
背景
平时自己设计shell脚本或修改服务器自带的脚本后,执行或者source的是否会出现了的错误。
可能出现的问题
格式问题
shell脚本是在window系统下写完,然后传到linux系统时出现,可以使用系统文件格式转化:dos2unix
可以在vi编辑模式下查看文件格式
#换成你要使用的脚本名 vi ****.sh
按Esc键退出编辑模式,输入下面的命令查看格式。
:set ff
如果脚本文件显示的不是unix格式,那么就执行下面的命令将文件格式转换为unix格式。
:set fileformat=unix
执行完之后输入下面的命令保存并退出编辑页面
:wq
脚本内容问题
如果上面的dos2unix命令后,执行还是出现报错,那就不是文件格式的问题了,而是代码层级的问题了
因为没有lint代码规范提示,所以你的shell脚本内容,需要从头到尾检查下:
a.if...else...fi
、for...done
、for...if...fi...done
等结构的上下结构闭合是否完整
b. 闭合结构型代码的开始和结尾是否有其他多余字符执行下面的命令检查脚本内容,具体到哪一行语法有错误。
#将install换成你的脚本名 sh -n install.sh
从下面的结果中可以看到语法错误提示(参考)
root@nas:/volume1/docker# sh -n install.sh install.sh: line 61: syntax error: unexpected end of file
剩下的就是逐步排查你的脚本了
👇👇👇
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果