CENTOS 7:在shell中运行mysqldump时没有用户/密码,但出现错误。
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格式。
问题的原因是脚本中的行尾有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解决了这个问题。