缘起
在Linux系统中,运行Shell脚本,出现了如下错误:
one-more.sh: line 1: $'\r': command not found
出现这样的错误,是因为Shell脚本在Windows系统编写时,每行结尾是\r\n
,而在Linux系统中行每行结尾是\n
,所以在Linux系统中运行脚本时,会认为\r
是一个字符,导致运行错误。
解决方法
去除Shell脚本的\r
字符:
方法1
sed -i 's/\r//' one-more.sh
方法2
dos2unix one-more.sh
输出如下:
dos2unix: converting file one-more.sh to Unix format ...
如果出现如下错误:
-bash: dos2unix: command not found
说明dos2unix
还没有安装,运行如下命令进行安装:
yum install -y dos2unix
输出如下:
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
base | 3.6 kB 00:00:00
extras | 2.9 kB 00:00:00
salt | 2.9 kB 00:00:00
updates | 2.9 kB 00:00:00
Determining fastest mirrors
Resolving Dependencies
--> Running transaction check
---> Package dos2unix.x86_64 0:6.0.3-7.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===========================================================================================================================================================================================================================================
Package Arch Version Repository Size
===========================================================================================================================================================================================================================================
Installing:
dos2unix x86_64 6.0.3-7.el7 base 74 k
Transaction Summary
===========================================================================================================================================================================================================================================
Install 1 Package
Total download size: 74 k
Installed size: 190 k
Downloading packages:
dos2unix-6.0.3-7.el7.x86_64.rpm | 74 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : dos2unix-6.0.3-7.el7.x86_64 1/1
Verifying : dos2unix-6.0.3-7.el7.x86_64 1/1
Installed:
dos2unix.x86_64 0:6.0.3-7.el7
Complete!