Linux 运行 sh 脚本有 r 字符的解决方法

2022-08-10 14:30:21 浏览数 (1)

Linux 运行 sh 脚本时可能报 r 相关错误,本文记录解决方案。

问题复现

  • 在 Windows 下建立脚本文件 test.sh
代码语言:javascript复制


echo "Hello World"


echo "finish"

  • 在 Linux 下运行
代码语言:javascript复制
./test.sh: line 1: $'r': command not found
./test.sh: line 2: $'r': command not found
Hello World
./test.sh: line 4: $'r': command not found
./test.sh: line 5: $'r': command not found
finish

  • 会报出 r 的错误
代码语言:javascript复制
syntax error near unexpected token '$'dor''

问题原因

  • Unix体系里,每行结尾只有“<换行>”,即“n”;
  • Windows体系里面,每行结尾是“<换行><回 车>”,即“nr”
  • Unix 执行 Windows 生成的脚本就可能报错

解决方案

核心目标为将 r 删除掉

  • 方法一:运行下面的语句
代码语言:javascript复制
sudo sed -i 's/r//' test.sh

  • 方法二:运行下面的语句,然后再运行sudo bash test1215.sh
代码语言:javascript复制
sudo sed -i 's/r//' test.sh

参考资料

  • https://blog.csdn.net/zkw_1998/article/details/111207132

0 人点赞