curl:从stdin传递一个命名参数

时间:2014-07-31 10:28:32

标签: bash curl

我有一个需要一些参数的Web服务。我想通过stdin传递其中一个参数(名为" data")来卷曲。 我试过了

echo -n "some data" | curl -d  x="foo" -d y="bar" -d data=@- "http://somewhere"

不起作用,因为数据的价值是" @ - "而不是"一些数据"。

是否可以在curl中使用@来将stdin的输入与特定参数相关联?

编辑:我的目标是链接多个Web服务,以便我传递的数据将是另一个curl调用的输出。

3 个答案:

答案 0 :(得分:7)

使用-d @-

E.g:

echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown

输出:

<p>Hello <strong>world</strong>!</p>

答案 1 :(得分:1)

这不可能吗?

curl -d  x="foo" -d y="bar" -d data="@some data" "http://somewhere"

或者

curl -d  x="foo" -d y="bar" -d data="@$(echo "some data")" "http://somewhere"

echo "some data"可以是另一个命令或文件输入:$(<somefile)

答案 2 :(得分:0)

您也可以将数据保存在变量中,然后像这样使用它:

VAR="some data"; curl -d  x="foo" -d y="bar" -d data=$VAR "http://somewhere"