遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

shell脚本报错:test.sh: line 2: $'\r': command not found

问题

在win上写好shell脚本,传到linux服务器运行调试的时候报错:

test.sh: line 2: $'\r': command not found

 

原因

这个错误是由于脚本文件的换行符问题引起的。Windows和Linux系统的换行符不同:
  • Windows使用\r\n(回车+换行)。
  • Linux使用\n(换行)。
脚本是在Windows上编辑的,然后放到Linux上运行,可能会导致\r被解释为脚本的一部分,从而引发错误。
 

方案

使用sed命令移除脚本中的\r:

sed -i 's/\r$//' test.sh

  

解释:

1. **`sed`**: 是一个流编辑器,用于处理文本。
2. **`-i`**: 表示直接修改文件内容(即“原地编辑”)。
3. **`'s/\r$//'`**: 是 `sed` 的替换命令。
  - `s/`: 表示替换操作。
  - `\r`: 匹配回车符(Windows 换行符的一部分)。
  - `$`: 匹配行尾。
  - `//`: 替换为空,即删除匹配的内容。
4. **`test.sh`**: 是要处理的文件名。

 

其它方案

使用dos2unix工具转换脚本

安装

yum install dos2unix

 

使用

dos2unix test.sh
 

 

posted @ 2025-03-15 21:20  全栈测试笔记  阅读(453)  评论(0)    收藏  举报
浏览器标题切换
浏览器标题切换end