Restore_DB.sh:-
#!/bin/bash
mysql -u user -ppassword DB_name < /home/A/B/SQL_File.sql
我使用上面的代码从 cron 作业恢复 MySQL 数据库,但出现以下错误
/usr/local/cpanel/bin/jailshell: /home/A/B/Restore_DB.sh: /bin/bash^M: bad interpreter: No such file or directory
这是我使用的 cron 作业命令:-
/home/A/B/Restore_DB.sh
尝试 dos2unix 是否可以修复您的文件:
$ dos2unix /home/A/B/Restore_DB.sh
如果该命令不适合您,您可以使用发行版的包管理器安装它。
问题在于换行符编码,Windows/DOS 的换行符编码方式与 Unix 不同。
\n
(仅换行符)\r\n
(2 个字符,回车换行)这看起来像是 unixoid 和 MS-Windows 等系统上不同行结束编码的问题。
使用 unixoid 系统原生的行结尾
\n
,而不是 MS-Windows 风格。该字符包含一个额外的字符,通常会像您在错误消息中看到的那样显示 (^M
)。
您可以使用十六进制编辑器仔细查看相关行。这使您可以准确查看字符串中使用了哪些不可打印字符。
我刚刚在 OS X 上遇到了这个问题,并注意到 dos2unix 可以作为酿造公式使用:
brew install dos2unix
yum install dos2unix
就像一个魅力!!!!