将 bash 中的行换行为 HTML 格式



我在IP地址之间做断线时遇到问题。它们出现在 1 条长水平线上。我可以在第一个脚本上做一个断行,但它仍然出现在 1 行中。

脚本 #1 (showblock.sh(

command=$(pfctl -t bruteforce -T show)
my_array="${command[@]}"
for i in "${my_array[@]}"
do
: 
# do whatever on $i
printf "%sn" "${my_array[@]}"
done

脚本 # 2 (showBlockOutput.sh(

#!/bin/sh
current_date=$(date)
output=$(showblock.sh)
OUT=oldBlocks/ipblock.html

cat << EOF > $OUT
<html>
<head>
<meta http-equiv="refresh" content="30">
</head>
<body>
<h1>Blocked IPs</h1>
$current_date <br>
$output 
<br>
</body>
</html>
EOF

您没有为数组设置$command$my_array。您可以将变量包装在()中以将其拆分为数组。

my_array=(${command})

如果您希望在呈现 HTML 时将它们作为单独的行,则需要在行之间放置<br>,而不是换行符。

不需要for循环,当给出比格式运算符更多的输入时,printf会自动循环。

printf "%s<br>n" "${my_array[@]}"

整个showblock.sh脚本可以只是一行:

#!/bin/bash
printf "%s<br>n" $(pfctl -t bruteforce -T show)

最新更新