syntax error: unexpected end of file

在windows上写的shell文件  上传到linux服务器老是报 syntax error: unexpected end of file  一行行删除检查也没找到原因 ,网上一搜才发现:

DOS下文件和Linux下文件格式差异问题导致的。

DOS下的文本文件是以 作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以 作为断行标志的,表示成十六进制就是0A。

【在windows里,换行用的两个符号,回车 ,换行符号 ,在linux下只需一个符号 就可以了.】

DOS格式的文本文件在Linux下,用较低版本的vi打开时行尾会显示^M,当然也有可能看不到,但是在vi的时候,会在下面显示此文件的格式,"M.txt" [dos] 8L, 72C表示是一个dos文件格式。

解决方案:

使用下面的命令将文件格式设置为unix格式即可解决上述错误。
vi M.txt
:set fileformat=unix
:wq

结案