You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在curl命令中传递变量以生成Bearer Token?

解决curl变量替换导致的Token认证失败问题

问题核心是shell单引号内的变量不会被解析,你原来的命令里$cid和$csec被单引号包裹,实际传的是字符串$cid和$csec,而不是你定义的变量值,所以返回"Bad credentials"错误。

给你两个可行的命令写法:

写法一:用双引号包裹整个-d参数内容

curl --request POST "$url"/oauth/token -d "grant_type=client_credentials&client_id=$cid&client_secret=$csec"

双引号会让shell正常解析里面的变量,同时$url用双引号包裹,能避免URL里有特殊字符(比如空格)导致路径拆分错误。

写法二:单引号+双引号拼接内容

把固定不变的字符串用单引号包裹,变量部分用双引号单独包裹后拼接:

curl --request POST "$url"/oauth/token -d 'grant_type=client_credentials&client_id='"$cid"'&client_secret='"$csec"

这种写法适合参数里有特殊字符需要单引号转义的场景,同样能保证变量被正确替换。

为什么之前的尝试失败?

  • 你试过的'grant_type=client_credentials&client_id="$cid"&client_secret="$csec"':单引号内的双引号只是普通字符,shell不会解析里面的变量,所以还是传的$cid字符串。
  • {$url}是错误的变量写法,正确的大括号展开格式是${url},但放在单引号里依然不会被解析。

内容的提问来源于stack exchange,提问作者Saumya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:22:06