尝试执行该 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