脚本报错$‘\r‘:command not found

文章讲述了在Windows系统下使用Notepad++编辑器将脚本的行尾符从CRLF转换为Unix系统的LF格式,以消除在Unix系统中运行时因 被当作命令导致的错误。

由于脚本是在Windows系统编写的, Windows中编辑器默认行尾是\r\n

而在Unix系统中编辑器默认行尾是\n, 之前的\r当成命令当然报错找不到此命令

我们需要重新配置行尾符, 在Notepad++编辑器中

 在Windows(CRLF)右键选择转为Unix(LF)之后保存, 发送到服务器并覆盖原始脚本即可

 

在 Unix/Linux 环境中执行 Shell 脚本时,出现 `$'\r': command not found` 错误通常与脚本文件的换行符格式有关。Windows 和 Linux 系统在换行符的表示上存在差异:Windows 使用 `\r\n` 作为换行符,而 Linux 仅使用 `\n`,因此当一个在 Windows 上编辑的脚本文件被直接复制到 Linux 系统中执行时,Shell 会将 `\r` 视为无效命令的一部分,从而导致报错[^2]。 ### 问题原因 - **换行符格式不兼容**:脚本文件包含 Windows 风格的换行符 `\r\n`,而 Linux Shell 无法识别 `\r`。 - **文件编码格式**:脚本文件保存时使用的编码或格式未设置为 Unix 兼容格式。 ### 解决方法 #### 方法一:使用 `vim` 修改文件格式为 Unix 1. 打开脚本文件: ```bash vim your_script.sh ``` 2. 设置文件格式为 Unix: ```vim :set ff=unix ``` 3. 保存并退出: ```vim :wq ``` 这会将文件中的所有 `\r\n` 换行符转换为 `\n` 格式[^2]。 #### 方法二:使用 `dos2unix` 工具转换格式 1. 安装 `dos2unix`(如未安装): ```bash sudo apt install dos2unix ``` 2. 转换文件格式: ```bash dos2unix your_script.sh ``` 此工具专门用于将 Windows 格式的文本文件转换为 Unix 格式,操作简洁高效[^3]。 #### 方法三:使用 `sed` 删除 `\r` 字符 如果无法使用 `vim` 或 `dos2unix`,可以使用 `sed` 命令删除所有 `\r` 字符: ```bash sed -i 's/\r//' your_script.sh ``` 该命令会直接在文件中替换所有 `\r` 字符为空,从而清除换行符问题[^4]。 #### 方法四:检查文件并转换格式(使用 `file` 命令) 1. 使用 `file` 命令检查文件类型: ```bash file your_script.sh ``` 如果输出中包含 `CRLF`,则说明文件使用 Windows 换行符。 2. 使用 `tr` 命令去除 `\r`: ```bash tr -d '\r' < your_script.sh > new_script.sh ``` 该命令会生成一个不包含 `\r` 字符的新脚本文件[^1]。 --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值