我有一个需要一些参数的Web服务。我想通过stdin传递其中一个参数(名为" data")来卷曲。 我试过了
echo -n "some data" | curl -d x="foo" -d y="bar" -d data=@- "http://somewhere"
不起作用,因为数据的价值是" @ - "而不是"一些数据"。
是否可以在curl中使用@来将stdin的输入与特定参数相关联?
编辑:我的目标是链接多个Web服务,以便我传递的数据将是另一个curl调用的输出。
答案 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"