command not found

在项目中写了个启动的shell,在linux上执行报了语法错误,具体如下:

[admin@sz app]$ sh start.sh
start.sh: line 2: $'\r': command not found
: No such file or directory
start.sh: line 4: $'\r': command not found
start.sh: line 6: $'\r': command not found
start.sh: line 8: $'\r': command not found
start.sh: line 9: $'\r': command not found
start.sh: line 12: $'\r': command not found
start.sh: line 15: $'\r': command not found
start.sh: line 26: syntax error: unexpected end of file

之前也写过一些shell,例如:编译,打包;控制服务;等shell,有的是在本地Windows上写的,有的是在服务器上写的,从没遇到过这个问题。

查询了一下,原因是:DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A。

因此需要对文件格式进行转换,转换命令如下:

dos2unix your_sh.sh

如果提示命令不存在,需要安装

yum install -y dos2unix

https://sourceforge.net/projects/dos2unix/

报错的这个脚本我是在Eclipse里写的,之前Windows上写的脚本是用 Notepad++ 一直都没问题。

分享到