Как сохранить межстрочный интервал при чтении stdout? - PullRequest
0 голосов
/ 03 ноября 2019

Я выполняю сценарий оболочки в Windows 10 через Cygwin, считываю stdout и stderr в строку и передаю эту строку в структуру, которая используется для выполнения html-шаблона.

Проблема в том, что интервал вывода не сохраняется после выполнения шаблона. Вот как я выполняю команду и устанавливаю вывод команды в моей структуре данных.

var outbuf, errbuf bytes.Buffer
cmd.Stdout = &outbuf
cmd.Stderr = &errbuf

err = cmd.Run()
if err != nil {
    log.Printf("Error running command: %s", err)
    data.Output = errbuf.String()
    return data
}
log.Printf("%v", outbuf.String())
data.Output = outbuf.String()
return data

log.Printf выдаст что-то вроде этого, чего я и ожидаю. Отображаются новые строки.

If the same archived message file is in both system/logs and archived_logs, it will be searched/counted twice!

====X1-SC1====



Done

После выполнения команды и обновления моей структуры данных данные выполняются с помощью шаблона html.

err = t.Execute(w, data)
if err != nil {
    log.Println(err)
    w.WriteHeader(http.StatusInternalServerError)
    w.Write([]byte(fmt.Sprintf("Failed to execute html: %v", err)))
    return
    }
}
<div style="text-align:center">
   {{.Output}}
</div>

После перехода кгде мой проект выставлен, я вижу результат, который я ожидаю, но все это в одной строке. Интервал не сохранился. Кажется, что выполнение html / шаблона удаляет лишние пробелы, или строки, или что-то в этом роде. Есть ли способ обойти это?

If the same archived message file is in both system/logs and archived_logs, it will be searched/counted twice! Maybe it'll be fixed in the future.. ====X1-SC1==== Done

1 Ответ

0 голосов
/ 03 ноября 2019

Просмотрите исходный код и обнаружите, что пробел сохраняется в шаблоне. Проблема в том, что в браузере сворачиваются последовательности пробелов. См. developer.mozilla.org / ru-ru / docs / Web / CSS / white-space .

...