问题原因:

Linux和windows下的回车换行符不兼容

三种行尾格式如下:

  1.  unix为:  <LF>      : /n
  2.  windows为:   <CR><LF>  : /r/n
  3.   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工具:

  1. sudo apt-get install dos2unix                   
  2. yun install dos2unix

安装成功后可以定义一个shell脚本,或者手动执行一下命令

dos2unix *.sh

就会看到:dos2unix: converting file eval1.sh to Unix format ...

就将这个文件转换为了linux下的执行文件了。