今天老王在 Linux 上运行一个 Shell 脚本时,报错 syntax error near unexpected token `$'{\r”,看错误类型是语法错误,但是检查了下代码发现并没有问题,后来才发现是因为 Windows 和 Linux 的回车换行符不兼容导致的,本文分享下解决方法。
一、问题原因
不同操作系统下的换行符格式是不一样的:
- Mac:<CR>: /r
- Windows:<CR><LF>: /r/n
- Linux:<LF>: /n
所以直接将 Window 上的 Shell 脚本拷贝到 Linux 上直接就会报错 syntax error near unexpected token `$’\r”。
二、解决方法
解决方法也很简单,一般编辑器都支持档案格式转换,将文件格式转成 UNIX 格式即可。
或者在 Linux 上安装一个工具包:dos2unix
(apt-get install dos2unix
),再转换即可:
dos2unix xxx.sh
转换后就可以直接在 Linux 上运行脚本了。