如何用curl发送换行符?
我已经尝试了以下发送curl的换行符,但是\n
不被curl解释。
curl -X PUT -d "my message\n" http://localhost:8000/hello
我怎样才能用curl发送一个换行符?
有时你想提供的数据要逐字发送。
--data-binary
选项可以做到这一点。
使用JavaScriptstring语法,你的shell传递"my message\\n"
来curl,而不是"my message\n"
。 如果您使用的是bash,请改用$'my message\n'
。 如果你使用tcsh,我不知道该怎么做。
curl -X PUT -d $'my message\n' http://localhost:8000/hello
我通过searchbash的manpage发现了这一点。
如果你正在使用zsh,你不会有这个问题,因为echo "1\n2\n3"
打印换行符。
对于不想使用文件的人来说,解决scheme并不想使用shell逃脱的魔法:
curl -X POST --data-binary @- http://url.com <<EOF line one line two EOF
但是这是后数据有效载荷中的字面新行,而不是表单字段。
有一个更简单的方法!
curl -X PUT -d $'my message\n' http://localhost:8000/hello
这将使用ANSI-C引用来插入换行符。
没有pipe道,没有数据文件。 另请参见使用cURL发送换行符 。
(我在这里结束了一个稍微不同的问题,所以我只是要发表我的答案,因为这可能有助于未来的探险家)
我的解决scheme适用于发送表单样式数据的人员,即查询string中的键/值对。 使用编码的换行符,即%0A
,就像编码空间是%20
。 您可以使用http://meyerweb.com/eric/tools/dencoder/转换其他符号。;
所以如果你想把关键message
设置为这个值:
line one another
你会发送
curl --data "message=line%20one%0Aanother" http://localhost:8000/hello
不是你的问题的答案,但我会通过创build一个包含消息和换行符的临时文件来解决这个问题,然后让curl来处理这个文件:
curl -X PUT -d @message.txt http://localhost:8000/hello
从手册 :
如果你用字母@开始数据,其余的应该是一个文件名来读取数据,或者 – 如果你想curl从标准input读取数据。 该文件的内容必须已经被URL编码。 也可以指定多个文件。 从一个名为'foobar'的文件中发布数据可以用–data @foobar来完成。
一个非常简单的方法,只需Shift-Enter在控制台中rest。 非常可读的打字。
curl -d "line1 line2" http-echo.com Server gets this: line1\nline2
这样做是为了消除换行符:
curl -d "line1 \ line2" http-echo.com Server gets this: line1 line2
我正在使用Sendgrid这个代码(复制下面)最初在这里findhttps://sendgrid.com/docs/API_Reference/Web_API_v3/index.html
\n\n
在Gmail中工作,但\n
被忽略。 我试图加倍逃避和其他build议。 我也试过\r\n
,而且在Gmail中也不行。 注意:我没有打算testing其他电子邮件客户端,也许这是一个特定于Gmail的问题。
curl --request POST \ --url https://api.sendgrid.com/v3/mail/send \ --header 'Authorization: Bearer YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{"personalizations": [{"to": [{"email": "your.email@example.com"}]}],"from": {"email": "example@example.com"},"subject": "Hello, World!","content": [{"type": "text/plain", "value": "Heya!"}]}'
最终,我放弃寻找解决scheme,并将text/plain
text/html
切换到text/html
并使用<br />
标签。
有人build议,如果您启用了跟踪像素,则Sendgrid将明文转换为HTML,这是有道理的。 也许换行符在纯文本到html的转换过程中被破坏了。 我假设客户想要一个跟踪像素,所以决定切换到HTML。
如果你只是想在结果之后换行,你可以打印一个echo:
curl -X PUT -d "my message" http://localhost:8000/hello && echo