目录
一、引言:
近来在使用 shell 脚本时,从服务器上把脚本文件拿下来,本地修改完之后上传至服务器,运行时出现了如下的错误信息:
最终排查之后,发现是系统兼容性问题,现就解决方案做出说明:
二、问题解决:
首先查看文件格式,使用 notepad++ 打开文件,依次选择视图 -> 显示符号 -> 显示行尾符,然后就看到了预料到的,所有的回车换行都是 Windows 下的 CR LF:
得知是 Linux 和 Windows 下的回车换行符不兼容的问题。所以,剩下的就是将 Windows 下面的 CR LF,转换为 Linux 下面的 LF 即可,如下:
依次选择编辑 -> 文档格式转换 -> 转换为 UNIX 格式:
即可将所有的 CR LF,转换为 LF:
保存之后再运行此 shell 脚本,即可正常运行了。
三、总结:
linux/cygwin 下面的 shell 脚本出现错误:syntax error near unexpected token `$’do\r”,是由于该脚本文件是在 Windows 环境下创建编辑的,其默认是将所有的回车变成:CR 加上 LF,而Linux/Unix 中的回车只是 LF,所以导致解释器不认,出现此错误。
所以解决办法就是,将所有的 CRLF 转换为 LF 即可,转换的方法有多种,比如用 dos2unix,或者直接使用 notepad++ 帮我们转换,都是可以的。
环境兼容性问题虽然是小事儿,但是也得重视哦
如果出现文章之外的问题,可以私信笔者,欢迎批评指正~~