行X: $‘\r’: 未找到命令 问题解决与记录

事件起因,最近刚接触Shell脚本编写,是在Windows上进行的编写,上传到服务器后执行报错 “行X: $‘\r’: 未找到命令”。
后来查找资料发现,在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,在Windows中文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。不仅只有回车,同样包含反斜杠与正斜杠的使用等等。而解决原因的根本办法就是就是把dos文件格式转换为unix格式。

一、使用dos2unix转换

1. 安装dos2unix

  1. CentOS安装命令:
yum install dos2unix
  1. Ubuntu安装命令:
sudo apt-get install dos2unix

2.转换格式

  1. 在你要转换的文件路径前添加dos2unix,如下所示:
dos2unix filename.sh
  1. 正常情况会输出如下所示的信息:
dos2unix: converting file filename.sh to Unix format ...
  1. 至此便成功将dos格式转换成了unix格式,可以正常执行了。

二、使用编辑器更改格式

这个方法此处就不过多赘述了,此类编辑器有不少,如notepad++等,编辑时文件格式选择UNIX即可。