\ n scaped при записи в файл в Go - PullRequest
0 голосов
/ 20 ноября 2018

Я создал веб-сервер, который получает запросы POST, создает текстовый файл и печатает его с помощью команды lp.

Однако эти строки, поступающие из запроса, содержащего «\ n», сохраняются в файлс \ n в качестве текста вместо создания разрыва строки.

Если я объявляю жестко закодированную строку, создаются разрывы строки.

Это соответствующий код:

func handler(w http.ResponseWriter, r *http.Request) {
    bodyBuffer, _ := ioutil.ReadAll(r.Body)
    err := ioutil.WriteFile("/tmp/print.txt", bodyBuffer, 0644)
    //... More code
}

Если я запускаю эту команду:

curl -X POST --data "My\nName" http://127.0.0.1:8080/

Сгенерированный текстовый файл содержит: My \ nName вместо двух строк.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Используйте curl -X POST --data $'My\nName' http://127.0.0.1:8080/ вместо.$ -strings (в Bash) - это цитирование ANSI-C, которое поддерживает все C-подобные escape-последовательности, включая "\ n".

0 голосов
/ 20 ноября 2018

«My \ nName» не интерполирует \n на новую строку

echo "My\nName"
My\nName

Однако есть способы сделать это в оболочке

echo "$(printf 'My\nName')"
My
Name

Ваш Go в порядке,сторона скручивания не работает так, как ожидалось

...