Linux(Centos7):syntax error: unexpected end of file

ゝ一世哀愁。 2022-08-30 11:52 25阅读 0赞
  1. syntax error: unexpected end of file
  2. /bin/bash^M: bad interpreter: No such file or directory

一、问题描述

本地创建项目启动脚本

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYnVzaTAwMQ_size_16_color_FFFFFF_t_70

上传Linux服务器后启动报错

xx.sh: line 25: syntax error: unexpected end of file

或者xx.sh: /bin/bash^M: bad interpreter: No such file or directory

这样的错误主要是由于shell脚本文件是dos格式,即每一行结尾以\r\n来标识,而unix格式的文件行尾则以\n来标识,更改文件格式即可。

二、查看脚本文件格式3种办法

1)、vi h.sh或 vim h.sh打开文件,如果是dos格式,则底部会有提示 [dos]

20210720160711409.png

2)、vi h.sh或 vim h.sh打开文件,执行 :set ff,回车。

20210720160249457.png

3)、cat -A h.sh从显示结果可以判断,dos格式的文件行尾为 ^M$ ,unix格式的文件行尾为 $

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpYnVzaTAwMQ_size_16_color_FFFFFF_t_70 1

由上图可知是unix格式

三、解决方法1

vi h.sh或 vim h.sh打开文件,执行:set ff=unix 设置文件为unix,然后执行:wq,保存成unix格式 。

20210720160249457.png

更改后

20210720160348621.png

四、解决方法2

使用sed命令 sed -i “s/\r//“ filename 或者 sed -i “s/^M//“ filename 直接替换结尾符为unix格式。
推荐 sed -i “s/\r//“ filename ,因为 sed -i “s/^M//“ filename 可能会失效

有用请点赞,养成良好习惯!

疑问交流鼓励请留言!

发表评论

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

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

相关阅读