Bash Curl请求不发送完整参数

时间:2017-12-21 13:21:19

标签: bash curl post

我有以下小型bash脚本:

TEST=$(curl -X POST -s -H "Content-type: application/json" -X POST http://$SITE/REST/v1/ -d '
{
    "Authorization":"Bearer '$TOKEN'"
}
' --trace-ascii /dev/stdout)

在这种情况下,$ TOKEN = c4cc0c81e279defd4bd261e9e1550e8a1ded5JKg5

但是,当我发送启用了--trace-ascii的请求时,我可以在输出中看到以下内容:

{. "Authorization":"Bearer "c4cc0c81e279defd4bd261e9 0040: e1550e8a1ded5JKg5"". }

任何原因导致分裂?我该如何防止这种情况?

1 个答案:

答案 0 :(得分:1)

我会这样做,这将有助于引用:

data=$(printf '{"Authorization":"Bearer %s"}' "$TOKEN")
output=$(curl -s -H "Content-type: application/json" -X POST http://$SITE/REST/v1/ -d "$data" --trace-ascii /dev/stdout)

我怀疑您可能需要将Authorization作为标头而不是数据发送。试试这个,它很可读

curl_opts=(
    --silent
    --header "Content-type: application/json"
    --header "Authorization: Bearer $token"
    --trace-ascii -
)
curl "${curl_opts[@]}" -X POST -d "$other_data" "$url"

请注意,您应该不再使用ALL_CAPS_VARNAMES:将这些保留为shell保留。