发送带有文件附件的电子邮件作为bash数组

时间:2016-08-31 14:07:52

标签: bash

以下是从通过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中完成?

1 个答案:

答案 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"

一些注意事项:

  1. 将字符串包含在字符串中时使用${files[*]};当每个元素都应该是一个单独的参数时,请使用${files[@]}
  2. 使用多个参数,-a必须是--之前的 last 选项。
  3. 您可能不希望在主题中包含每个备份名称。