Разрыв строки в формате bash до HTML - PullRequest
1 голос
/ 11 февраля 2020

У меня проблемы с разрывом строки между IP-адресами. Они появляются в 1 длинной горизонтальной линии. Я могу сделать разрыв строки для первого сценария, но он по-прежнему отображается в 1 строке.

script # 1 (showblock. sh)

command=$(pfctl -t bruteforce -T show)
my_array="${command[@]}"

for i in "${my_array[@]}"
do
   : 
   # do whatever on $i
   printf "%s\n" "${my_array[@]}"
done

script # 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

1 Ответ

1 голос
/ 11 февраля 2020

Вы не устанавливаете $command или $my_array для массивов. Вы можете заключить переменную в (), чтобы разделить ее на массив.

my_array=(${command})

И если вы хотите, чтобы они были отдельными строками при рендеринге HTML, вам нужно поместить <br> между строки, а не перевод строки.

Нет необходимости в том, что for l oop, printf автоматически будет l oop, если дано больше входных данных, чем операторов форматирования.

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

Весь сценарий showblock.sh может быть однострочным:

#!/bin/bash
printf "%s<br>\n" $(pfctl -t bruteforce -T show)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...