我正在使用这条线
( cat bodyText.txt; uuencode backup.tar ) | mail -s "backup" [email protected]
在由 cron 触发的 bash 脚本中。
该行几乎是完美的,但它挂起等待Ctrl-D键入,以便可以发送消息和附件。
如何在 bash 脚本中包含Ctrl-以使该行工作?D
答案1
uuencode 是: uuencode 名称 < 源文件
也许只需要最后一个空行:
; echo -e "\n\n" ;
在右括号之前添加,然后重试?-
所以在你的情况下:
( cat bodyText.txt; uuencode backup.tar < backup.tar ; echo -e "\n\n" ; ) | mail -s "backup" [email protected]
另一种方法是使用mutt
它更好地处理附件,并了解 mime 类型等:
mutt -s "the subject" -a backup.tar -- [email protected] < bodyText.txt
答案2
正如其他人所说,Control-D 是告诉 shell 发送文件结尾的方式。当流关闭时,从流读取的进程应该到达文件末尾。
但看来您正在尝试以更完整的形式实现已经存在的东西。当然,您可能有理由这么做,但如果您对现有解决方案感兴趣,mpack/munpack是对文件进行 mime 编码并通过邮件发送的命令行程序。您可以阅读联机帮助页看看它是否符合您的要求。
答案3
你的意思是:
uuencode backup.tar < bodyText.txt | mail -s "backup" [email protected]
答案4
使用详细模式 (-v) 以避免 ctrl+d
echo -e 'Mail body'| mail -v -s 'Mail Subject' [email protected]