问题原因:
Linux和windows下的回车换行符不兼容
三种行尾格式如下:
- unix为: <LF> : /n
- windows为: <CR><LF> : /r/n
- mac为: <CR> : /r
所以:这也是为什么window将<CR><LF>的文件转移到unix上会出现syntax error near unexpected token `$’do\r”的原因。
问题解决:
1、在windows上可以用文本编辑器查看所有字符,例如notepad++,视图->显示符号->显示所有符号,如下:
在每行的结尾显示了CRLF的符号问题正是由此产生的。
2、用文本编辑器解决办法,eclipse等编辑器都可以解决,拿notepad++来说,编辑->档案格式转换->转换为UNIX格式:
进行转换之后就成了如下:
再放到linux上运行就不会出现以上报错了。
3、使用dos2unix工具进行处理。
再linux上安装dos2unix工具:
- sudo apt-get install dos2unix
- yun install dos2unix
安装成功后可以定义一个shell脚本,或者手动执行一下命令
dos2unix *.sh
就会看到:dos2unix: converting file eval1.sh to Unix format ...
就将这个文件转换为了linux下的执行文件了。