Bash Curl请求不发送完整参数

问题描述 投票:0回答:1

我有以下小的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"". }

有什么理由分裂吗?我怎么能阻止这个?

bash curl post
1个回答
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保留。

© www.soinside.com 2019 - 2024. All rights reserved.