为启动器和测试命令执行自动数据库备份。我发现通过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
显然,引号将其作为字符串而不是命令执行。
答案 0 :(得分:0)
不要打破你的头脑,我写了一个bash脚本,它将帮助你实现真正想要做的事情。 https://github.com/jeevandongre/backup-restore
答案 1 :(得分:0)
为什么它没有找到命令
您的报价不正确,请尝试以下方式:
while read line ; do mysqldump -uroot "$line" > "$line".sql ; done
没有使用mysqldump
所以我无法帮助解决特定命令的语法。