shell脚本:$'\r':command not found的解决方法

最近想写一些常用的shell脚本,是在windows编写然后传到linux的。

然后碰到了init.sh: line 1: $'\r': command not found 1

记录一下解决方案。

在Linux系统中,运行Shell脚本,出现了如下错误: one-more.sh: line 1: $’\r’: command not found 1 出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n,而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行错误。

1 事故现场

在Linux系统中,运行Shell脚本,出现了如下错误:

1
init.sh: line 1: $'\r': command not found 1

2 事故分析

出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n, 而在Linux系统中行每行结尾是\n,所以在Linux系统中运行脚本时,会认为\r是一个字符,导致运行错误。

3 事故处理

去除Shell脚本的\r字符

3.1 方案一

1
sed -i 's/\r//' init.sh

3.2 方案二

1
yum install -y dos2unix
1
dos2unix init.sh

8 躺板板

红伞伞白杆杆,吃完一起躺板板

躺板板埋山山,亲朋都来吃饭饭

饭饭里有红伞伞,吃完全村埋山山,来年长满红伞伞

联系博主,加入【羊山丨交流社区】

联系博主


本博客所有文章除特别声明外,均为原创。版权归博主小马所有。任何团体、机构、媒体、网站、公众号及个人不得转载。如需转载,请联系博主(关于页面)。如其他团体、机构、媒体、网站、博客或个人未经博主允许擅自转载使用,请自负版权等法律责任!