邮寄多个文件而不考虑文件是否存在
Mailing multiple files unregarding file existence
我在一封邮件中向自己发送多个文件:
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 语句,但这似乎有点不对劲。什么是更好的方法?
您可以通过过滤掉 non-existent 个文件来动态构建 -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
构建数组 参数(也来自候选数组):
files=(/somedir/file1.md
/somedir/file2.md
/somedir/file3.md
/somedir/file4.md)
for f in "${files[@]}"; do
[[ -f "$f" ]] && attachments+=(-a "$f")
done
echo "Body text" | mailx -s "The files" "${attachments[@]}"
我在一封邮件中向自己发送多个文件:
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 语句,但这似乎有点不对劲。什么是更好的方法?
您可以通过过滤掉 non-existent 个文件来动态构建 -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
构建数组 参数(也来自候选数组):
files=(/somedir/file1.md
/somedir/file2.md
/somedir/file3.md
/somedir/file4.md)
for f in "${files[@]}"; do
[[ -f "$f" ]] && attachments+=(-a "$f")
done
echo "Body text" | mailx -s "The files" "${attachments[@]}"