windows下写的shell脚本在linux执行出错的解决办法

文章讲述了由于Windows和Linux操作系统对文本文件编码方式的不同,导致在Windows下创建的shell脚本在Linux上无法正常运行。主要问题是DOS格式的新行字符在Linux中不被识别。解决方案是使用dos2unix命令将DOS格式的脚本转换为Unix格式,从而在Linux环境下正确执行。安装dos2unix后,通过命令`dos2unixfilename.sh`可完成转换。
摘要由CSDN通过智能技术生成

1.问题来源

在Windows操作系统下上传的shell脚本可能会出现无法运行的问题,这是因为Windows和Linux等操作系统对于文本文件的编码方式不同所导致的。

2.问题过程

我们先在Windows操作系统下创建一个shell脚本tx1.sh,编码格式为UTF-8,脚本内容为:

echo 10+10
a=20
echo $a
echo $a+30

将文件上传至linux中执行脚本的运行结果:

为什么 echo $a+30 输出的是+30”?变量a为什么没有被引用?

我们通过file指令查看文件格式:

tx1.sh:这表明该文件是一个文本文件,采用ASCII编码。

主要原因是tx1.sh是我在Windows下编辑然后上传到Linux系统里执行的。.sh文件的格式为dos格式。而Linux只能执行格式为Unix格式的脚本。因为在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令。

3.解决方式

使用dos2unix命令,这个命令可以将DOS格式的文本文件转换成Unix或Linux格式。在终端中输入“dos2unix filename.sh”即可将名为filename.sh的shell脚本转换为Unix或Linux格式。

3.1在Linux中安装dos2unix

要在Linux系统中使用dos2unix命令,就需要安装dos2unix,可以按照以下步骤进行操作:

  • 打开终端程序,输入以下命令并按下回车键:
sudo yum install dos2unix
  • 等待命令行工具下载和安装dos2unix软件包。

安装完成后,你就可以使用dos2unix命令将文本文件从DOS格式转换成Unix或Linux格式。

3.2验证结果

在终端中输入“dos2unix filename.sh”即可将名为filename.sh的shell脚本转换为Unix或Linux格式。

如转换示例中的tx1.sh,操作如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值