使用Bash脚本批量添加Excel文件为邮件附件失败,该脚本是否可行?
问题分析:mailx多附件脚本无法正常工作的原因
你提供的脚本不可行,原因如下:
多数版本的mailx中,-a参数一次仅能指定一个附件。当你使用-a *.xls时,shell会将通配符*.xls展开为匹配到的文件名列表,比如变成-a file1.xls file2.xls file3.xls。此时mailx只会将-a后的第一个文件file1.xls作为附件,剩下的file2.xls、file3.xls会被错误识别为邮件的收件人参数,最终导致仅第一个文件被成功添加为附件。
正确的实现方式
可以通过以下两种方法实现多附件发送:
- 循环构建附件参数
# 遍历所有xls文件,逐个添加-a参数 attachments=() for file in *.xls; do attachments+=("-a" "$file") done echo "Test Email" | mailx -s "Testing File Conv" "${attachments[@]}" test@testmail.com
- 用printf生成多个-a参数
echo "Test Email" | mailx -s "Testing File Conv" $(printf -- '-a %s ' *.xls) test@testmail.com
这两种方式都会为每个Excel文件单独添加一个-a参数,确保mailx能正确识别所有附件。
内容的提问来源于stack exchange,提问作者Jenifer
相关产品推荐
相关产品推荐

