邮件多个文件,无需考虑文件是否存在

时间:2017-02-14 11:14:44

标签: bash attachment mailx

我通过一封邮件向自己发送多个文件:

file1="/somedir/file1.md"
file2="/somedir/file2.md"
file3="/somedir/file3.md"
file4="/somedir/file4.md"
echo "Body text" | mailx -s "The Files" -a "${file1}" -a "${file2}" -a "${file3}" -a "${file4}" recipient@domain.com

这些文件并不总是存在,因此如果这些附件中的任何一个不存在,则不会发送邮件。但是,无论如何我想发送邮件与附件。我可以用嵌套在其中的多个其他if语句构建一个if语句,但这看起来有点狡猾。什么是更好的方式?

2 个答案:

答案 0 :(得分:3)

建立一个数组参数(来自候选人数组):

array(1) {
    [0]=> object(stdClass)#22 (11) {
        ["id_kokok"]=> string(1) "3"
        ["id_user"]=> string(1) "2"
        ["kokok"]=> string(57) "Aku punya anak lho, maksudku anak ayam :v #gaadayangnanya"
        ["react_like"]=> NULL
        ["react_love"]=> NULL
        ["react_fun"]=> NULL
        ["react_meh"]=> NULL
        ["react_mad"]=> NULL
        ["react_sad"]=> NULL
        ["privacy"]=> string(1) "1"
        ["timee"]=> string(19) "2017-02-09 13:46:57"
    }
}

答案 1 :(得分:0)

您可以通过过滤掉不存在的文件来动态构建-a选项:

files_arg=
for file in /somedir/file1.md /somedir/file2.md /somedir/file3.md /somedir/file4.md ~/.bashrc; do
    [[ -f $file ]] && files_arg="$files_arg -a $file"
done
echo $files_arg

输出:

-a /home/max/.bashrc