shell脚本每行后面多了一个^M的原因和解决办法

Posted 苦逼运维

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本每行后面多了一个^M的原因和解决办法相关的知识,希望对你有一定的参考价值。

  当执行在Windows系统下修改过的脚本时,会提示存在^M的错误,但是在Linux下直接使用vim打开并不存在。此时可以使用vim -b来打开脚本文件,就可以发现每行的末尾都存在^M。

  造成这样的原因是不同的系统使用了不同的换行符。在Windows下文本文件的每一行结尾都有一个回车(‘\n‘)和换行符(‘\r‘);在Linux下文本文件的每一行结尾都有一个回车(‘\n‘);在Mac下文本文件的每一行结尾都有一个换行符(‘\r‘)。

  所以,当在Linux使用vim打开Windows编辑过的脚本时,^M代表的就是换行符(‘\r‘)。

  解决办法也很简单就是使用vim -b打开脚本文件,然后使用在交互模式下输入替换命令:%s/^M//g(注意:^M是由<Ctrl>+<v>和<Ctrl>+<m>打出来的),最后在交互模式下输入保存退出命令:wq即可。

以上是关于shell脚本每行后面多了一个^M的原因和解决办法的主要内容,如果未能解决你的问题,请参考以下文章

CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法

shell脚本syntax error near unexpected token `done'

执行shell脚本时提示bad interpreter:No such file or directory的解决办法

将window的shell脚本通过ftp传输到Linux服务器后, shell脚本中执行时提示“没有那个文件或目录”的解决办法

source : not found 原因及解决办法

服务不支持 chkconfig 的解决办法