Bash curl:从stdin传递命名参数

Bash curl:从stdin传递命名参数,bash,curl,Bash,Curl,我有一个web服务,它需要一些参数。我想通过stdin将其中一个参数(名为“data”)传递给curl。 我试过了 这不起作用,因为数据的值是“@-”而不是“某些数据” 是否可以使用@in curl将stdin的输入与特定参数相关联 编辑:我的目标是链接多个web服务,这样我传递的数据将是另一个curl调用的输出。这是不可能的吗 curl -d x="foo" -d y="bar" -d data="@some data" "http://somewhere" 或 echo“some dat

我有一个web服务,它需要一些参数。我想通过stdin将其中一个参数(名为“data”)传递给curl。 我试过了

这不起作用,因为数据的值是“@-”而不是“某些数据”

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

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

这是不可能的吗

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


echo“some data”
可以是另一个命令或文件输入:
$(您也可以将数据保存在变量中,然后像这样使用它:

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

使用
-d@-

例如:

输出:

<p>Hello <strong>world</strong>!</p>
你好世界


在哪里运行
curl
?如何生成“一些数据”?你是从文件中获取的吗?我在问题中添加了信息如果你的操作系统支持它,你可以使用
/dev/stdin
作为文件名,而不是
-
。谢谢!第二个是我要找的。为什么需要
@
呢?你现在只是在传递一个字符串,根本不使用标准输入。@chepner我不确定操作是如何完成的实际上使用它,但我只是假设
-
是输入的表示形式,不包括
@
-
在许多应用程序中表示输入。无论哪种方式,它都可以被忽略。我想说它必须被忽略;“一些数据”和
$(…)现在只是字符串,而不是文件名。@ ChpEnter,当OP确认“代码> @ /代码>真的是不必要的时候,我会考虑这个变化。当我张贴这篇文章时,我注意到了不同之处,我是开放的,但是答案还是被证实了。
VAR="some data"; curl -d  x="foo" -d y="bar" -d data=$VAR "http://somewhere"
echo '{"text": "Hello **world**!"}' | curl -d @- https://api.github.com/markdown
<p>Hello <strong>world</strong>!</p>