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
__EOF__
本文作者:持之以恒(韧)
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!
关于博主:擅长性能、全链路、自动化、企业级自动化持续集成(DevTestOps)、测开等
面试必备:项目实战(性能、自动化)、简历笔试,https://www.cnblogs.com/uncleyong/p/15777706.html
测试提升:从测试小白到高级测试修炼之路,https://www.cnblogs.com/uncleyong/p/10530261.html
欢迎分享:如果您觉得文章对您有帮助,欢迎转载、分享,也可以点击文章右下角【推荐】一下!

浙公网安备 33010602011771号