shell脚本报错:“syntax error: unexpected end of file“ 原因和解决

╰+哭是因爲堅強的太久メ 2023-10-08 21:58 130阅读 0赞

在windows用notepad++编辑的shell脚本,拷贝到centos执行时,报错如下:

fafbe0ce28124fc1af9c0b7b5bca7fa7.png

导致报错的可能原因:

原因1:Windows的文本默认是dos格式,换行符 CR LF。Linux的文本是unix格式,换行符 LF。另外,Mac系统下文本换行符为 CR

在notepad++点击“显示所有字符”即可看到换行符,如下图:

426f79d259cb49e38aa78972b7db5be4.png

fe2a4cf4031a446ca9d387aab491e706.png

解决1:将dos格式转成unix格式,再执行脚本就不会报错了。

转换方式1:在windows中,notepad++编辑器右下角可直接修改文档格式,如下图:

16494e274cc84ffaad47ad1b09ee8efa.png

1a046677ded14df993c75deabbc5d30b.png

转换方式2:在Linux中,用vim打开脚本

用 :set ff 可查看文件格式

b6ca046d8eb7423ba093bdbb0d6ee259.png

5ef9293f990d444fa18aa4349a073543.png

用 :set ff=unix可设置文件格式为unix:

42ebc54ea6d04c678c7e11b71477ff54.png

36c7d96907b846338276ccb639c5a3fe.png

转换方式3:在Linux中,用dos2unix工具转换:

yum -yinstall dos2unix

dos2unixmyScript.sh

原因2:shell脚本语法格式错误。

解决2:用以下命令快速检查脚本是否有语法错误:

sh -n myScript.sh

命令有输出则是有语法错误,检查脚本,更正错误即可。

PS:用”-n”选项只会读取shell脚本,用于测试shell脚本是否存在语法错误,但不会实际执行脚本。

==================我的报错原因:=================

排查了很久,发现不是格式问题导致的报错,而是语法错误导致的,如下图:

690ecfb52028447fb12a84ba8ecccef0.png

发表评论

表情:
评论列表 (有 0 条评论,130人围观)

还没有评论,来说两句吧...

相关阅读