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

9 浏览
0 Comments

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

我想在CentOS 7的终端中运行bash脚本来导出数据库备份。然而,它以错误结束。\nbackup_test.sh\n

#!/bin/bash
thisthing=fiveminute
dumpfile=db-${thisthing}-`date +%Y%m%d%H%M`.sql
mysqldump database_name > $dumpfile.tmp 
mv $dumpfile.tmp $dumpfile

\n我已经设置了我的~/.my.cnf文件,可以在不要求用户密码的情况下运行导出命令:\n.my.cnf\n[mysqldump]\nuser=username\npassword=password\nskip-extended-insert\nskip-dump-date\n\n从终端执行\n

[site.backup@localhost ~]$ ./backup_test.sh

\n这最终导致以下错误:\n

-bash: ./backup_test.sh: /bin/bash^M: bad interpreter: No such file or directory

\n请问有人可以指导我错在哪里吗?\n编辑 #1\n权限已正确设置,因为backup_test.sh已设置为可执行文件\n解决方案\n问题是由于Windows的换行符\\r导致的,我猜我将脚本从Windows文件复制到Centos文件中,因此出现错误。\n要在vim中将脚本从Windows编码更改为Unix编码,您也可以使用:set ff=unix命令,然后保存文件,或者使用:set ff=dos命令再次获取DOS格式。

0
0 Comments

问题的原因是脚本中的行尾有Windows换行符\r。可以使用dos2unix命令来解决这个问题。

如果没有dos2unix命令,可以使用GNU sed来执行以下命令(在CentOS 7上应该是默认的):

sed -i 's/\s*$//' backup_test.sh

这个命令将从每一行的末尾删除所有空白字符(包括\r)。如果脚本的行末有重要的空白字符,请不要使用这个命令。

如果不知道如何运行dos2unix命令,可以先运行dos2unix backup_test.sh,然后像平常一样运行backup_test.sh

如果运行dos2unix命令时出现错误,可以采用其他解决方法。

感谢Eric的建议 - 我成功使用VIM解决了这个问题。

0