我已经创建了一个Web服务器,该服务器接收POST请求,创建一个txt文件,并使用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而不是两行。
答案 0 :(得分:4)
“我的\ n名称”没有将\n
插值到换行符
echo "My\nName"
My\nName
但是,在外壳中有多种方法可以实现
echo "$(printf 'My\nName')"
My
Name
您的Go很好,bash弯边的表现不如预期
答案 1 :(得分:0)
改为使用curl -X POST --data $'My\nName' http://127.0.0.1:8080/
。 $ -strings(在Bash中)是ANSI-C引号,它支持所有类似于C的转义序列,包括“ \ n”。