在Curl请求中使用Token变量失败,求新手解决方案
Curl变量替换问题解决方法
先纠正变量赋值错误
bash中变量赋值不能有空格,你的写法token = "xxx"会触发报错,正确写法是:
token="2_oXDMeAWeR3tiPLWjjPJHV_1OzeSwwW_0dyO0iLE67"
情况1:在请求头中使用变量
问题核心是bash单引号的特性:单引号包裹的内容会完全原样输出,不会解析变量。你原来的-H 'auth: "$token"'里,$token不会被替换成实际值。
两种可行解决方法:
- 用双引号包裹整个请求头,让变量正常解析:
curl -X GET 'https://myurl.com/test' \ -H 'auth-version: 2' \ -H "auth: $token"
- 拼接单引号和双引号,仅让变量部分处于双引号中:
curl -X GET 'https://myurl.com/test' \ -H 'auth-version: 2' \ -H 'auth: '"$token"
情况2:在JSON参数中使用变量
同样受单引号限制,另外注意:GET请求通常不携带请求体,若服务器支持GET带body,需用-d参数传递,同时处理变量解析:
解决方法1:用双引号包裹JSON,转义内部的双引号以避免语法错误:
token="2_oXDMeAWeR3tiPLWjjPJHV_1OzeSwwW_0dyO0iLE67" curl -X GET 'https://myurl.com/test' -d "{\"auth-version\": 2, \"auth\": \"$token\"}"
解决方法2:用单引号拼接JSON内容,变量部分单独用双引号包裹:
token="2_oXDMeAWeR3tiPLWjjPJHV_1OzeSwwW_0dyO0iLE67" curl -X GET 'https://myurl.com/test' -d '{"auth-version": 2, "auth": "'"$token"'"}'
补充:如果是GET请求,更规范的做法是把认证参数放在URL的查询字符串中:
curl -X GET "https://myurl.com/test?auth-version=2&auth=$token"
内容的提问来源于stack exchange,提问作者macuseronline
相关产品推荐
相关产品推荐

