为启动器和测试命令执行自动数据库备份。我发现对通过BASH CLI一个文本文件中的每一行执行一个动作是值得的效果:我创建的数据库名称的列表在文件的每一行上运行MySQLdump;未找到命令
# while read line ; do COMMAND $line ; done
文件:
# mysql -uroot -e "show databases" > databases
然后对该文件进行了以下尝试,看看它是否能正常工作。
# while read line ; do "mysqldump -uroot $line > /dbbackups/$line.sql" ; done
表面上看,这将是正常工作,但我遇到了以下错误(S):
[04:58:46] [[email protected] database-backup-testing]# cat databases | while read line ; do "mysqldump -uroot $line > $line.sql" ; done
-bash: mysqldump -uroot Database > Database.sql: command not found
-bash: mysqldump -uroot information_schema > information_schema.sql: command not found
-bash: mysqldump -uroot cphulkd > cphulkd.sql: command not found
我不知道为什么它是给找不到命令,当明显,输出这些命令似乎是正确的。我也尝试使用mysqldump(/ usr/bin/mysqldump)的绝对路径,但它给出了相同的错误(s)。
任何人都可以填写我为什么发生这种情况?
======================
编辑:固定
如果报价被删除该脚本; IE:
# cat databases | while read line ; do mysqldump -uroot $line > $line.sql ; done
具有引号显然是将它作为字符串执行而不是命令。
在bash中尝试“哪个mysqldump”。 “ls + chmod”确保“您可以执行mysqldump” – neohope 2013-03-28 10:13:10
您需要指定mysqldump的路径。但为什么不使用它的['--all-databases'](http://dev.mysql.com/doc/en/mysqldump.html#option_mysqldump_all-databases)选项? – eggyal 2013-03-28 10:13:39
使用绝对路径,我已经说上面我已经试过了,返回如下: ---- -bash:在/ usr/bin中/ mysqldump的-uroot数据库> Database.sql:没有这样的文件或目录 – 2013-03-28 10:20:12