📌  相关文章
📜  run.sh:第 39 行:$'\r':找不到命令 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:34:46.372000             🧑  作者: Mango

"run.sh: line 39: $'\r': command not found"

如果你在运行 Bash 脚本时看到这个错误,那么这意味着你的脚本在 Windows 和 Unix 之间进行文本转换时出现了问题。

在 Windows 中,行末有两个字符:回车符(\r)和换行符(\n)。在 Unix 中,行末只有一个换行符(\n)。

当你在 Windows 中编写并保存一个脚本,然后将其转移到 Unix 系统上运行时,可能会出现上述错误。因为在 Unix 上运行时,文件中的回车符会被当做命令来解释,然后就会出现 "$'\r': command not found" 这个错误。

一种解决方法是在 Unix 系统上使用 dos2unix 命令,将回车符转换成换行符。在终端中执行以下命令即可:

$ dos2unix run.sh

这个命令会修改 run.sh 文件并将回车符替换为换行符。

另一种解决方法是在 Windows 编辑器中将文本编码设置为 UTF-8 without BOM。这种编码方式可以避免在 Windows 和 Unix 之间进行文本转换时出现问题。

总之,遵循一些简单的规则,就能避免脚本中出现这种错误。例如,使用 Unix 格式进行编辑,并在运行前使用 dos2unix 命令进行转换。