![发送附件时如何使用 mailx 保持正文中的换行符?](https://linux22.com/image/57740/%E5%8F%91%E9%80%81%E9%99%84%E4%BB%B6%E6%97%B6%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20mailx%20%E4%BF%9D%E6%8C%81%E6%AD%A3%E6%96%87%E4%B8%AD%E7%9A%84%E6%8D%A2%E8%A1%8C%E7%AC%A6%EF%BC%9F.png)
我有一个脚本,可以通过电子邮件发送日志文件的文本作为电子邮件的正文。该日志文件的文本行之间有一些空白行,以提高可读性。
当我在脚本中使用以下行时,电子邮件可以正常发送并具有正确的格式:
cat ${log}|mailx -s "Email Subject Line" ${i} < ${log}
但是,我现在想在电子邮件中附加几个文件。我将该行修改为:
( echo `cat ${log}` ; uuencode ${file1} ${file1a} ; uuencode ${file2} ${file2a} ; uuencode ${file3} ${file3a} ) | mailx -m -s "Email Subject Line" ${i}
请注意,这${i}
是两行中的电子邮件收件人。
因此,现在电子邮件可以正常发送附件,但邮件正文只是一大块文本,没有换行符或任何其他内容。
我是否没有正确编写mailx行?有没有办法让格式保留到消息正文中?
答案1
命令行中未加引号的换行符被视为空格;这就是为什么你可以这样说
命令1 && 命令2
好吧,有时未引用的换行符会被视为分号。但是,当你说
echo `cat ${log}`
日志文件中的所有换行符都会变成空格。你可以通过说来解决这个问题
echo "`cat ${log}`"
但为什么不直接说
cat ${log}
?