尝试执行此 shell 脚本但出现此错误

尝试执行此 shell 脚本但出现此错误

尝试执行该 shell 脚本。

#!/bin/bash
# Proper header for a Bash script.

# Cleanup, version 2

# Run as root, of course.
# Insert code here to print error message and exit if not root.

LOG_DIR=/var/log
# Variables are better than hard-coded values.
cd $LOG_DIR

cat /dev/null > messages
cat /dev/null > wtmp


echo "Logs cleaned up."

exit #  The right and proper method of "exiting" from a script.
     #  A bare "exit" (no parameter) returns the exit status
     #+ of the preceding command.
~

但收到此消息

[root@localhost ~]# ./clean.sh
-bash: ./clean.sh: /bin/bash^M: bad interpreter: No such file or directory

知道发生什么事了吗?

答案1

您的脚本有 DOS 行尾。使用编辑器或 dos2unix、recode 等工具将其转换为 Linux 行尾。

DOS/Windows 通常以 CR+LF 结束行,而 Linux 仅使用 LF。shell 不知道如何理解额外的 CR 字符,因此将其显示为^M

答案2

您需要检查文件编码,似乎您已在 Windows 中编辑了 bash 脚本,然后将文件移动到 Linux。要解决此问题,您有三个解决方案
1- 使用 dos2unix 更改文件编码
2- 复制文件内容并将其粘贴到新文件中 3-
使用 Windows 中的任何脚本编辑器更改文件编码,然后再次将其移动到 Linux

相关内容