Windows下写脚本无法运行在linux上?怎麽办?

Windows下写脚本无法运行在linux上?怎麽办?

$‘\r‘: command not found的解决方法


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

one-more.sh: line 1: $'\r': command not found
1
出现这样的错误,是因为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!



实例
最简单的用法就是dos2unix直接跟上文件名:

dos2unix file
如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)

dos2unix file1 file2 file3
dos2unix -o file1 file2 file3
上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。

dos2unix oldfile newfile
如果要保持文件时间戳不变,加上-k参数。所以上面几条命令都是可以加上-k参数来保持文件时间戳的。

dos2unix -k file
dos2unix -k file1 file2 file3
dos2unix -k -o file1 file2 file3
dos2unix -k -n oldfile newfile




posted @ 2024-02-27 19:17  三思博客  阅读(125)  评论(0编辑  收藏  举报