缘起

在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!