如何在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
相关产品推荐
相关产品推荐

