Linux下执行shell脚本,出现错误 $‘\r‘:command not found的解决方案

这个错误是由于Windows系统和Linux系统的不同编码造成的。Windows下的回车是\r\n,而Linux下的回车是\n,所以用shell远程编写的脚本中的回车不被Linux系统识别,但使用vim编辑的时候还看不到\r。
解决方法:用vim编辑脚本文件时加上-b,即vim -b filename,这样打开的文件是"Binary mode",可以看到多出来的东西,显示的是^M,删掉保存运行就行了。

在这里插入图片描述

出现原因:
脚本是在Windows下编辑完成后上传Linux上执行的,Windows下的换行是回车符+换行符,也就是\r\n,而Linux下是换行符\n。Linux下不识别\r为回车符,所以导致每行的配置都多了个\r,因此是编码的问题。

解决方案:
方案一
sed -i ‘s/\r//’ 脚本名

方案二
yum -y install dos2unix

dos2unix 脚本名
  在Linux下执行程序最省事的方式就是将系统的执行流程封装成一个shell脚本,上传到linux环境中后就可以直接执行了,但是今天在具体实施的时候出现了错误 $'\r': command not found,一直灭有解决,查询了相关的资料后才发现了问题,最根本的问题就是在Windows下换行的“\r”到了Linux环境下不能够识别了,因为Linux环境下默认的换行符为“\n”,这里就需要做一点修改的工作才可以了。

       我选择的解决方案是借助于dos2unix插件的转化功能来完成这个工作,进入Linux环境下安装该组件:

apt install dos2unix
      以脚本test.sh为例来讲解使用方法:
 

chmod 755 test.sh
dos2unix test.sh
./test.sh
      非常简单的使用,学习记录一下。
、、

shell脚本执行报错 invalid option

执行shell 脚本报错信息如下:
在这里插入图片描述

解决办法步骤如下:

用vim 打开脚本 ,发现脚本格式为doc ,则需要将脚本格式转为unix
在这里插入图片描述

使用vim 修改格式
:set fileformat=unix
1
在这里插入图片描述

  1. 在保存退出

:wq
1
就完美解决啦

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值