以下是从通过cron运行的WordPress备份bash脚本中获取的片段。
do
file="$MDB/$db.$now.sql.gz"
mysqldump -u $USER -h $HOST -p$PASS $db | gzip -9 > $file
echo "Backup $file.....DONE"
echo "Database Backup of $file" | mutt -a "$file" -s "Database Backup File Attached" -- theemail@gmail.com
echo "Emailing $file.... DONE"
done
请注意通过电子邮件发送备份部分。这些文件是逐个通过电子邮件发送的,因此有10个数据库备份,将发送10封电子邮件。
我想在for循环中将文件累积到一个数组中,然后通过mutt
发送一封包含所有文件作为附件的电子邮件。
如何在Bash中完成?
答案 0 :(得分:2)
只需将file
的值添加到循环内的数组中即可。
declare -a files
...
do
file="$MDB/$db.$now.sql.gz"
mysqldump -u "$USER" -h "$HOST" -p"$PASS" "$db" | gzip -9 > "$file"
files+=("$file")
done
echo "Backup ${files[*]}.....DONE"
echo "Database Backup" | mutt -s "Database Backup Files Attached" -a "${files[@]}" -- theemail@gmail.com
echo "Emailing ${files[*]}.... DONE"
一些注意事项:
${files[*]}
;当每个元素都应该是一个单独的参数时,请使用${files[@]}
。-a
必须是--
之前的 last 选项。