对变量中的每个参数重复命令

时间:2012-10-26 13:05:19

标签: bash shell backup

#!/bin/sh
dblist=mail ftp www
for arg in $dblist; do
mysqldump -u dumper --password=$dbpass --socket $socket --database $dblist >> /tmp/backup/$dblist.sql
done

变量dblist中的每个数据库都应该编写一个新的mysqldump行并将数据库名称添加到相应的字段中,如何实现?

3 个答案:

答案 0 :(得分:2)

使用变量arg(即您的数据库名称)为每个数据库创建一个单独的sql转储文件,如下所示:

#!/bin/sh
declare -a dblist=(mail ftp www)
for arg in "${dblist[@]}"
do
   mysqldump -u dumper --password=$dbpass --socket $socket --database $arg >> /tmp/backup/$arg.sql
done

答案 1 :(得分:1)

为什么不将dblist声明为数组?

dblist=(mail ftp www)
for arg in ${dblist}; do
   mysqldump .... $arg

并在调用中使用$arg变量。

这是bash array tutorial

答案 2 :(得分:0)

dblist=(mail ftp)

for arg in ${dblist[*]}
do
   mysqldump -u $dbuser --password=$dbpass --socket $socket --database $arg >> /tmp/backup/$arg.sql
done

有效,谢谢!