之前在windows下用NotePad++工具编写一个shell脚本。拿到Linux下运行时提示Syntax error语法错误,{^M不匹配。使用vi编辑器打开一看,才发现脚本的每行结尾都有一个^M符号,注意,使用more命令是查看不出来的。后来查了下,发现dos系统和Linux系统下对每行结尾处理不一样。dos系统在文本每行的结尾加上回车符和换行符,而linux系统会对每行结尾只添加换行符。因此,windows下编写的脚本拿到Linux下时,linux会把每行的回车符翻译成普通字符,接上原来的文本,所以vi命令会看到每行结尾多了一个^M。
解决方案:在windows下编写的文本文件,最好使用UEdit工具 文件->转换->DOS转UNIX 进行转换下在上传到Linux系统下运行。