我有一个名为:zip_final.zip 的 zip 文件
我必须将此文件作为附件附加并发送邮件。
另外,我必须在邮件正文中显示 zip 文件中存在的所有文件名。
我有这个代码:
export files_list=`unzip -Zl zip_final.zip`
mailx -a ${zip_final.zip} -s "Files list | Zip file" << EOM
Hi team, sent zip file.
Files inside it are : $files_list
Thank you.
EOM
但如果我这样做,邮件就不会发送。就像邮件命令甚至没有被调用/触发一样。我什至也没有收到任何错误消息。
有人可以建议如何使用 mailx 命令将该 zip 文件作为附件发送,并在邮件正文中显示 zip 文件内的所有文件名吗?
答案1
这是更正后的示例脚本:
#!/bin/bash
#<$1 : zip file name
#<$2 ...: recipients
file=$1
shift
(
echo " Hi team, sent zip file."
echo " Files inside it are :"
unzip -l "$file"
echo " Thank you."
) |
mailx -A "$file" -s "Files list | Zip file" "$@"
你错过了什么:
mail -A
被编码-a
编辑:这取决于 mailx 实现unzip -Z
出乎意料
编辑:它改变输出样式- 没有邮件收件人
${zip_final.zip}
没有意义
答案2
你可以尝试这样的事情:
export files_list=`unzip -Zl zip_final.zip`
uuencode zip_final.zip zip_final.zip |mailx -s 'Files list | Zip file' << EOM
Hi team, sent zip file.
Files inside it are : $files_list
Thank you.
EOM
uuencode
命令会将二进制文件“转换”为 ASCII 并能够通过邮件发送
答案3
命令未执行的可能原因是您使用-a ${zip_final.zip}
而不是仅使用-a zip_final.zip
.
${zip_final.zip}
意味着变量的值它被称作zip_final.zip
。但这是 shell 无法解释的非法变量名,因此它会返回错误:bad substitution
。这似乎是问题所在。
替换${zip_final.zip}
为zip_final.zip
,您的脚本应该可以工作。