无法通过shell获取表格式的输出
下面是代码。我没有得到表格格式的输出。有人能帮忙吗无法通过shell获取表格式的输出,shell,email,Shell,Email,下面是代码。我没有得到表格格式的输出。有人能帮忙吗 #!/bin/bash df -h > /home/test/space.txt tmp="/home/test/tmp.html" input="/home/test/space.txt" echo '<html><body><table border=1>' > "$tmp" awk '{print "<tr>";for(i=1;i<=NF;i++)print "<td
#!/bin/bash
df -h > /home/test/space.txt
tmp="/home/test/tmp.html"
input="/home/test/space.txt"
echo '<html><body><table border=1>' > "$tmp"
awk '{print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"} END{print "</table></body></html>"}' "$input" >> "$tmp"
cat $tmp | mail -s "$(echo -e "Test\nContent-Type: text/html")" -r yourmailaddress@...com
#/bin/bash
df-h>/home/test/space.txt
tmp=“/home/test/tmp.html”
input=“/home/test/space.txt”
回显“”>“$tmp”
awk'{print”“;for(i=1;i问题可能是您的mail
程序将管道输入编码为:
Content-Type: text/plain; charset=us-ascii
(鉴于您的邮件
可能是snail
,Berkeley mailx
,或herigroup\u mailx
——所有这些都是从Berkeley mail的各种最新版本中衍生出来的)
如果您的邮件
是提供-a
的衍生产品之一(附件)选项,这可能是一种方式。虽然您的电子邮件正文仍然是内容类型:text/plain
,但您的附件将以内容类型:text/html
的形式出现,大多数邮件阅读器将在电子邮件中显示它(这似乎是您的目标)
只需对例程进行一些调整,即可将df
的输出作为一个表来准备,您所做的工作相当不错。唯一的调整(可选,但有帮助)是使用快速sed
替换“Mounted on”
替换为“Mounted\u on”
为awk
提供一致数量的字段,然后设置表格“宽度=60%”
以防止表格呈现扭曲(技术术语)
例如,包括调整,您可以执行以下操作:
tmp=/home/david/tmp/df.html
echo '<html><body><table border=1 width=60%>' > "$tmp"
df | sed 's/Mounted\son/Mounted_on/' |
awk '{print "<tr>";for(i=1;i<=NF;i++)print "<td>" $i"</td>";print "</tr>"}
END
{print "</table></body></html>"}' >> "$tmp"
echo "df attached" | mailx -s "wizard df" -a "$tmp" david@nirvana
然后在旧版本的Thunderbird中进行检查,您会发现df
信息的表格输出,例如:
检查一下,让我知道这是否是您正在尝试的,以及您是否能够在您的命令行邮件程序版本中找到-a
(attach)选项(如果没有,我建议您检查发行版是否提供了s-nail
或herigroum-mailx
。对于一个小软件包,这两种实现提供了强大的命令行邮件功能)
编辑每个请求,将其编码为消息正文中的“text/html”
这在很大程度上取决于您拥有的mail/mailx/s-nail
软件包。使用s-nail
(通常别名为mailx
),使用-M
选项,您可以为电子邮件正文的stdin
上接收的文本指定内容类型。在这种情况下,您只需将“$tmp”
重定向到您的邮件命令,同时将-M“text/html”
指定为选项,例如,将上面的最后一行更改为:
mailx -M "text/html" -s "wizard df redir -M" david@nirvana < "$tmp"
因此,在这种情况下,您可能需要重新写入邮件标题,或者手动创建邮件正文,包括邮件的表部分的内容类型
,类似于:
Content-Type: text/html; charset=us-ascii
(或者您的字符集应该是什么)
这就是为什么我建议,如果你不使用基于s-nail
的mail/mailx
,那么去看看你的发行版是否提供了s-nail
软件包,或者它甚至值得从源代码开始构建,并放入/usr/local/bin
@davis herring..对不起,这是关闭这个问题的原因对任何重复问题中未提及的一些mailx
的新功能进行了详细说明。将此作为dup关闭将防止任何先前问题的访问者了解到,当前的Herigroum mailx实现包含-M
选项,允许用户指定内容类型代码>(例如“text/html”
)对于从stdin
重定向的正文文本,s-nail
是现代Linux系统上伪装为mailx
的所有包中最活跃/最新的。感谢您的帮助。我需要在电子邮件正文内容中输出。可能吗?我确信可能,我尝试将其转储到电子邮件正文中,但没有设置内容类型
手动操作,只会在正文中留下html作为纯文本。具有讽刺意味的是,他关于需要设置内容类型的回答是正确的,但对于您的邮件版本,a
(幸运的)正在查找附件(这就是您收到的文件未找到的原因)。如果您有s-nail
,您可以使用-M
选项将stdin
的内容指定为text/html
,没有该选项需要更多的时间-您的邮件是什么将“text/plain”
改为“text/html”
。如果是我,我会下载当前版本并构建它,然后将其放入/usr/local/bin
中。如果您在系统上查看man-mailx
,我怀疑手册页的结尾描述了herigroup-mailx 2010
。Opensuse拥有mailx-12.5-25
,并且没有任何从stdin指定内容类型的能力代码>。是的..你是对的。。。
mailx -M "text/html" -s "wizard df redir -M" david@nirvana < "$tmp"
type/subtype extension [extension . . .]
Content-Type: text/html; charset=us-ascii