使用多行请求有效负载后的管道卷曲输出

时间:2019-06-12 16:19:40

标签: bash curl pipe

我有一个curl请求,它接受JSON作为其有效负载。 JSON有效负载是多行字符串。我在EOF之后用管道传递此curl的输出时遇到了麻烦。

curl https://foo.bar/v1/baz \
        -H "FOO-BAR: BAZ" \
        -X POST -d @- <<'EOF'
{
    "foo" : "foo_foo",
    "bar": {}
}
EOF

这行得通,但是如果我想将此输出通过管道传输到某些内容(例如python -m json.tool),则会遇到问题。以下内容无效:

curl https://foo.bar/v1/baz \
        -H "FOO-BAR: BAZ" \
        -X POST -d @- <<'EOF'
{
    "foo" : "foo_foo",
    "bar": {}
}
EOF | python -m json.tool

1 个答案:

答案 0 :(得分:2)

此文档直到命令本身后的下一行(逻辑)才开始。像任何其他重定向运算符一样,<<'EOF'不必是命令行上的最终令牌。

curl https://foo.bar/v1/baz \
    -H "FOO-BAR: BAZ" \
    -X POST -d @- <<'EOF'  | python -m json.tool
{
    "foo" : "foo_foo",
    "bar": {}
}
EOF