我有一个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
答案 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