在每行文件上运行MySQLdump;没有找到指令

时间:2013-03-28 10:07:14

标签: mysql bash command-line command command-line-interface

为启动器和测试命令执行自动数据库备份。我发现通过BASH CLI对文本文件的每一行执行操作是有效的:

# while read line ; do COMMAND $line ; done

我已经创建了一个数据库名称文件列表:

# mysql -uroot -e "show databases" > databases

然后针对该文件尝试以下操作以查看它是否可以正常工作。

# while read line ; do "mysqldump -uroot $line > /dbbackups/$line.sql" ; done

看起来,这样可以正常工作但遇到以下错误:

[04:58:46] [root@theia 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),但是它给出了相同的错误。

任何人都可以告诉我为什么会这样吗?

======================

编辑:已修复


如果删除引号,脚本可以正常工作; IE:

# cat databases | while read line ; do mysqldump -uroot $line > $line.sql ; done

显然,引号将其作为字符串而不是命令执行。

2 个答案:

答案 0 :(得分:0)

不要打破你的头脑,我写了一个bash脚本,它将帮助你实现真正想要做的事情。 https://github.com/jeevandongre/backup-restore

答案 1 :(得分:0)

  

为什么它没有找到命令

您的报价不正确,请尝试以下方式:

while read line ; do mysqldump -uroot "$line" > "$line".sql ; done

没有使用mysqldump所以我无法帮助解决特定命令的语法。