Linux系统执行shell脚本提示^M报错问题解决

Java技术 潘老师 3年前 (2021-10-26) 1786 ℃ (0) 扫码查看

最近在Liunx系统执行在windows上编写的shell脚本时提示执行失败,具体提示如下:

遇到这类问题,解决方案也很简单,下面潘老师来说下该如何去解决。

问题原因

DOS/Windows里,文本文件的换行符为\r\n,而在Linux系统里则为\n,所以DOS/Windows里编辑过的文本文件到了Linux里,每一行都多了个^M,从而导致运行shell脚本报错。

解决方法1:windows本地解决

从问题的根源解决就是在windows上编写shell脚本时,比如潘老师这里时使用Notepad++进行编辑的,需要对shell脚本文件设置如下:
1)设置编码为无BOM的UTF-8格式
Linux系统执行shell脚本提示^M报错问题解决
2)设置右下角系统类型为Unix
Linux系统执行shell脚本提示^M报错问题解决
这样操作之后保存就解决了。

解决方法2:Linux系统上解决

1)编辑重设编码

编辑文件,然后使用set指令设置系统格式为unix

# 编辑
vi xxx.sh
#esc退出执行
:set ff=unix
#再esc保存退出
:wq

一般这样操作过后就解决了,如果还不能解决就尝试下下面这个方法:

2)替换^M

#替换\r字符
sed -i 's/\r$//' xxx.sh
#如果有^M字符
sed -i 's/^M//g' xxx.sh

以上几种方法,基本就能解决Linux系统执行shell脚本提示^M报错的问题,如还有疑问可以留言讨论。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/3882.html
喜欢 (1)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】