windows换行符导致的异常( $‘\r‘: command not found 异常)

举报
i进击的攻城狮 发表于 2022/10/29 11:24:48 2022/10/29
【摘要】 记录一次错误

一、错误产生原因

在执行脚本时出现,$’\r’: command not found 异常。比如
在这里插入图片描述

这个异常说的时,脚本中有一个命令\r没有找到。可你打开脚本,却并没有发现什么\r。

其实这个\r是来自于换行符。正常情况是无法看见的,也不能通过删除键直接删除。,windows下的换行符是\n\r,而Linux下的换行符是\n;
如果你的脚本文件是在windows下编写的,直接上传到linux系统去运行,就会报这个错误。因为linux换行后会把\n继续当作一条命令去执行。

二、几种解决方法

  • 在服务器端编写脚本
    如果直接在linux下编写脚本,当敲换行符时,默认就是\r,就不会有这个问题。
  • 删除脚本中的\r
    不像字符可以简单的删除,对应特殊字符,可以使用sed命令,将脚本文件中我们看不见的\r删除的。比如
    sed -i 's/\r//' *.sh
    
  • 在windows编写脚本时,手动配置换行符按照Linux的规则
    使用IDEA举例,在IDEA右下角,有这个符号,如下
    在这里插入图片描述
    点击它,选择LF,设置\n为换行符,这里我是已经设置好了的,你的可能默认是CRLF
    在这里插入图片描述
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。