Mysql &引用/bin/bash^M:错误的解释器:没有这样的文件或目录";从cron作业执行bash脚本时出错
还原数据库sh:-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
#!/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换行符序列:
(2个字符,回车符和换行符)\r\n
请参见
yum安装dos2unix
工作起来像个魔咒 我刚刚在OS X上遇到了这个问题,并注意到dos2unix作为brew公式提供:
brew install dos2unix
请给我一个如何使用的示例\n?只需使用正常的
返回值
,它会产生换行符。您只需确保您告诉编辑器使用普通的unixoid换行符(unix样式)。或者使用@stefreak建议的剥离工具。虽然这听起来像是开销,但考虑到您只想键入一个换行符:-),或者如上所述,使用hexeditor。它允许验证和更改字符串。您可以轻松地发现并删除冒犯的角色。它的显示方式如下:0x10 0x13。这里0x10是\n
,0x13是\r
,您不希望出现在这里。的可能重复虽然这会导致正确的路径(但您如何知道yum
是提交者的正确包管理工具?),但更多的解释(原因和修复)会有所帮助。
brew install dos2unix