目录
参考文章:£繁星丶春水关于syntax error near unexpected token in 解决方案
一、遇到的问题:
在使用 shell 脚本时,在本地修改完之后上传至虚拟机,运行时出现了如下的错误信息:
经搜索发现是系统兼容性问题,Linux 和 Windows 下的回车换行符不兼容。
二:问题解决:
在notepad++中查看 视图->显示符号->显示行尾符
得到如下结果:所有的回车换行都是Windows下的CR LF
接下来我们把Windows下的回车换行CR LF 转换成Linux下的LF
依次选择 编辑->文档格式转换->转换为UNIX格式:
接下来我们看转换后的结果:
Windows下的所有CR LF都转换成了Linux下的LF ,保存后再运行shell脚本,即可正常运行
三:总结
Linux环境下shell 脚本出现错误:syntax error near unexpected token `$’{\r''问题,是由于该脚本文件是在 Windows 环境下编辑的,其默认是将所有的回车换行变成:CR LF,而Linux/Unix 中的回车换行只是 LF,所以导致解释器不认识,出现此错误。
解决办法就是,将所有的 CRLF 转换为 LF 即可,转换的方法有多种,比如用 dos2unix(?这是什么~),或者直接使用 notepad++ 帮我们转换,都是可以的。
编辑的,其默认是将所有的回车变成:CR 加上 LF,而Linux/Unix 中的回车只是 LF,所以导致解释器不认,出现此错误。
所以解决办法就是,将所有的 CRLF 转换为 LF 即可,转换的方法有多种,比如用 dos2unix,或者直接使用 notepad++ 帮我们转换,都是可以的。