为初学者和测试命令执行自动数据库备份。我发现通过 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) 的绝对路径,但它给出了相同的错误。
谁能告诉我为什么会这样?
编辑:我找到了一个修复:
如果引号被删除,该脚本将起作用:
# cat databases |
while read line; do
mysqldump -uroot $line > $line.sql
done
显然,引号导致它作为字符串而不是命令执行。