当在 Linux 上执行一个包含 Windows 回车符的 .sh 文件时,可能会报错:
bash: ./test.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
或者
/bin/bash^M: 命令不存在
或者
syntax error: unexpected end of file
这些错误一般是由于文本文件在 Windows 中编写并使用 Windows 格式进行换行符而不是 Unix 格式(LF),即 \r\n
而不是 \n
,因此需要我们修改文件格式。
我们可以使用 dos2unix
命令来将 .sh
文本文件从 Windows 格式转换为 Unix 格式(删除所有 \r
)。
示例1:
# 先安装 dos2unix
sudo apt-get install dos2unix
# 转换文件格式
dos2unix test.sh
# 执行脚本
./test.sh
在转换文件格式之后,我们重新执行 .sh
文件,就可以成功地运行它了。
示例2:
# 使用 sed 命令替换文件格式
sed -i 's/\r//' test.sh
# 执行脚本
./test.sh
如果你遇到了以上的问题,可以尝试使用以上的解决方法来解决问题。