将 DF 命令的结果输出到变量,然后打印到 HTML 页面

将 DF 命令的结果输出到变量,然后打印到 HTML 页面

我在执行一个脚本时遇到问题,该脚本基本上从服务器捕获磁盘空间并将结果输出到 HTML 页面。

STORAGE=$(df -PTh | column -t | sort -n -k6n)

STDOUT 中的输出正常,格式正确。当我将变量回显到 HTML 页面时,输出变成一行,就像这样:

/dev/vx/dsk/localdg/wm7x01 vxfs 30G 21G 9.3G 70% /apps/wm7x01 /dev/mapper/vg00-vrts ext3 6.9G 4.7G 2.3G 68% /vrts_install /dev/mapper/vg00-ora11g_cli ext3 7.7G 4.1G 3.3G 57% /usr/oracle11g_cli /dev/mapper/vg00-repackage ext3 1008M 423M 586M 42% /var/spool/repackage /dev/vx/dsk/cfs_dcgnts_dg/shared vxfs 220G 91G 130G 42% /apps/shared

我什至尝试使用:

  • 报价:echo "$STORAGE"
  • 数组:echo "{STORAGE[@]}"

不幸的是,所有结果都相同。

答案1

你如何回应它?如在

$ printf "<pre>%s</pre>\n" "$storage" >> file.html 

应该管用。

应该没有必要包含column.这是 HTML 表格的候选者,可以通过以下方式生成:

df -PTh | \
sed '1d' | \
sort -n -k6 | \
awk '
{
    printf "\n\t<tr>";
    for (n = 1; n < 7; ++n)
            printf("\n\t<td>%s</td>",$n);
    printf "\n\t<td>";
    for(;n <= NF; ++n)
            printf("%s ",$n);
    printf "</td>\n\t</tr>"
}
'

将其包裹在类似以下内容中:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Disk space usage</title>
<style>
table, td, th {
    border : 1px solid green;
}
th {
    background-color: green;
    color           : white;
}
</style>
</head><body>
<table>
    <tr>
    <th>Filesystem</th>
    <th>Type</th>
    <th>Size</th>
    <th>Used</th>
    <th>Avail</th>
    <th>Use%</th>
    <th>Mounted on</th>
    </tr>

<!-- df output awk table -->

</table>
</body>
</html>

答案2

将这样的输出包装在 HTML 的 pre 块中。

例子

STORAGE=$(df -PTh | column -t | sort -n -k6n)
echo "<pre>$STORAGE</pre>"

HTML 不注意保留空白。

答案3

在命令链的输出中,有空格和换行符形式的空白(幸运的是没有制表符)。您应该将输出通过管道传输到| sed 's/ /&nbsp;/g' | sed 's/^/<br>/'

STORAGE=$(df -PTh | column -t | sort -n -k6n)| sed 's/ /&nbsp;/g' | sed 's/^/<br>/'

保留空白。您可以使用它而无需获得引起的字体更改效果<pre>

答案4

命令替换会破坏你的空白。从bash(1)手册页:

Bash 通过执行命令并将命令替换替换为命令的标准输出来执行扩展,并删除所有尾随换行符。嵌入的换行符不会被删除,但它们可能会在分词过程中被删除。

现在根据我的理解,这意味着使用

STORAGE="$(df ...)"

应该足以保留所有(但尾随)空白。然而,我尝试了两个版本,空白完全混乱了。相反,为什么不直接使用输出重定向:

df -PTh | column -t | sort -n -k6n >> /your/html/file

以及其他答案建议的过滤器,以在渲染的 HTML 页面中保留空格。

相关内容