Mysql &引用/bin/bash^M:错误的解释器:没有这样的文件或目录";从cron作业执行bash脚本时出错

Mysql &引用/bin/bash^M:错误的解释器:没有这样的文件或目录";从cron作业执行bash脚本时出错,mysql,linux,bash,cron,Mysql,Linux,Bash,Cron,还原数据库sh:- #!/bin/bash mysql -u user -ppassword DB_name < /home/A/B/SQL_File.sql 这是我使用的cron作业命令:- /home/A/B/Restore_DB.sh 在unixoid和类似MS Windows的系统上,his的行端编码不同,这似乎是个问题 使用unixoid系统固有的行尾\n,而不是MS Windows样式。该文件包含一个额外的字符,该字符通常与错误消息中显示的字符类似(^M) 通过使用hexe

还原数据库sh:-

#!/bin/bash
mysql -u user -ppassword DB_name < /home/A/B/SQL_File.sql
这是我使用的cron作业命令:-

/home/A/B/Restore_DB.sh

在unixoid和类似MS Windows的系统上,his的行端编码不同,这似乎是个问题

使用unixoid系统固有的行尾
\n
,而不是MS Windows样式。该文件包含一个额外的字符,该字符通常与错误消息中显示的字符类似(
^M


通过使用hexeditor,您可以更仔细地查看有问题的行。这允许您准确地看到字符串中使用了哪些不可打印的字符

如果dos2unix可以修复您的文件,请尝试:

$ dos2unix /home/A/B/Restore_DB.sh
如果dos2unix还不存在,您可以使用发行版的软件包管理器安装它

问题在于新行编码,Windows/DOS对新行的编码与Unix不同

  • Unix换行符序列:
    \n
    (仅换行字符)
  • Windows换行符序列:
    \r\n
    (2个字符,回车符和换行符)

请参见

yum安装dos2unix


工作起来像个魔咒

我刚刚在OS X上遇到了这个问题,并注意到dos2unix作为brew公式提供:

brew install dos2unix

请给我一个如何使用的示例\n?只需使用正常的
返回值
,它会产生换行符。您只需确保您告诉编辑器使用普通的unixoid换行符(unix样式)。或者使用@stefreak建议的剥离工具。虽然这听起来像是开销,但考虑到您只想键入一个换行符:-),或者如上所述,使用hexeditor。它允许验证和更改字符串。您可以轻松地发现并删除冒犯的角色。它的显示方式如下:0x10 0x13。这里0x10是
\n
,0x13是
\r
,您不希望出现在这里。的可能重复虽然这会导致正确的路径(但您如何知道
yum
是提交者的正确包管理工具?),但更多的解释(原因和修复)会有所帮助。
brew install dos2unix