在 bash 中将 Bearer 令牌作为变量传递

use*_*317 4 bash curl

我正在尝试传递不记名令牌(变量 $token)以通过curl 命令调用作业。但是 -H 之后的单引号不允许变量 $token 的值传递给curl 命令。

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' -H 'Content-Type: application/json' -H 'Authorization: Bearer $token  -d { "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

{“code”:400,“error”:“错误请求”,“reason”:“承载令牌格式无效。预期:'Bearer'。收到:'Bearer $token -d {“job_run”:{} }' .","message":"承载令牌无效。"}

我尝试使用变量 $token 添加转义字符:

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' -H 'Content-Type: application/json' -H 'Authorization: Bearer "\$token\"  -d { "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

我收到相同的错误:{“code”:400,“error”:“错误请求”,“reason”:“承载令牌格式无效。预期:'承载'。收到:'承载“\ $令牌\” - d { "job_run": {} }'.","message":"承载令牌无效。"}

我也尝试了双引号,已经几个小时了,我无法提取单引号内的变量值 $token。

有人可以帮忙并给我正确的语法吗?

提前致谢

use*_*001 10

这里的问题是引号。应该是这样的:

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' -H 'Content-Type: application/json' -H "Authorization: Bearer $token"  -d '{ "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

在多行中:

curl -X POST 'https://server.domain.com/v2/jobs/28723316-9373-44ba-9229-7c796f21b099/runs?project_id=aff59748-260a-476e-9578-b4f4a93e7a92' \
     -H 'Content-Type: application/json' \
     -H "Authorization: Bearer $token"  \ 
     -d '{ "job_run": {} }'
Run Code Online (Sandbox Code Playgroud)

具体来说,bash 中的变量在单引号 ( ) 中时不会进行插值'。因此,我们将动态字符串设置在双引号 ( ")内

-H "Authorization: Bearer $token"
Run Code Online (Sandbox Code Playgroud)

此外,-H-d参数是不同的,它们应该单独引用,在您的代码中,您将它们组合在一个参数中。

  • 你是个天才,这很有魅力,我花了几个小时尝试了很多东西。这就是变量没有在单引号内填充的问题。太感谢了!!!。 (2认同)