Bash CENTOS 7:在shell中运行mysqldump时没有用户/密码,但出现错误

Bash CENTOS 7:在shell中运行mysqldump时没有用户/密码,但出现错误,bash,shell,mysqldump,Bash,Shell,Mysqldump,我想在终端的CentOS 7中运行bash脚本以导出数据库转储。然而,它以错误结束 backup\u test.sh #!/bin/bash thisthing=fiveminute dumpfile=db-${thisthing}-`date +%Y%m%d%H%M`.sql mysqldump database_name > $dumpfile.tmp mv $dumpfile.tmp $dumpfile 我已将我的~/.my.cnf设置为可以运行转储,而无需询问用户密码: .m

我想在终端的CentOS 7中运行bash脚本以导出数据库转储。然而,它以错误结束

backup\u test.sh

#!/bin/bash

thisthing=fiveminute
dumpfile=db-${thisthing}-`date +%Y%m%d%H%M`.sql
mysqldump database_name > $dumpfile.tmp 
mv $dumpfile.tmp $dumpfile
我已将我的~/.my.cnf设置为可以运行转储,而无需询问用户密码:

.my.cnf

[mysqldump]
user=username
password=password
skip-extended-insert
skip-dump-date
从终端执行

[site.backup@localhost ~]$ ./backup_test.sh
这将导致以下错误:

-bash: ./backup_test.sh: /bin/bash^M: bad interpreter: No such file or directory
谁能告诉我哪里出了问题

编辑#1

权限设置正确,因为backup_test.sh设置为可执行

解决方案

问题是由于基于Windows的行尾,\r,我想我是将脚本从基于Windows的文件复制到Centos文件中的,因此出现了错误


要在
vim
中将脚本从Windows编码更改为Unix,您还可以使用
:set ff=Unix
然后保存文件,或者
:set ff=dos
再次获取dos格式。

您的shebang行(即
^M
)中有Windows行尾字符(
\r
)。在您的脚本上运行
dos2unix
,您应该很好

如果您没有
dos2unix
,以下将与GNU sed一起使用(在CentOS 7上应为默认设置):


这将删除每行末尾的空白(包括
\r
),因此,如果行末尾有重要的空白,请不要这样做(您的脚本似乎不是这样)

如何在脚本上运行dos2unix?@GhazanfarMir运行
dos2unix backup_test.sh
然后正常运行
backup_test.sh
我会遇到以下错误:bash:dos2unix:command not found…@GhazanfarMir查看我的更新以获得替代解决方案感谢Eric-我使用VIM成功地做到了这一点:
sed -i 's/\s*$//' backup_test.sh