Bash 将curl响应的特定部分保存到变量

Bash 将curl响应的特定部分保存到变量,bash,shell,curl,grep,ifs,Bash,Shell,Curl,Grep,Ifs,我目前正在编写一个bash脚本,我想将curl命令输出的特定部分保存到一个变量中 这是我的curl命令,带有一些测试参数: curl-k-I--header“Accept:application/*;version=34.0”--header“Authorization:Basic testXXX1”--请求POSThttps://test.io/api/sessions 上述curl命令的输出: Date: Mon, 19 Apr 2021 12:13:48 GMT REQUEST-ID: t

我目前正在编写一个bash脚本,我想将curl命令输出的特定部分保存到一个变量中

这是我的curl命令,带有一些测试参数:
curl-k-I--header“Accept:application/*;version=34.0”--header“Authorization:Basic testXXX1”--请求POSThttps://test.io/api/sessions

上述curl命令的输出:

Date: Mon, 19 Apr 2021 12:13:48 GMT
REQUEST-ID: test1
ACCESS-TOKEN: test1.testXXX.testXX-testXXXX_testXXX_testXXXX-testXX_NR_TESTXX_test_nnndnndnddn_jdjdjdjd_jbjndinfjenkndkn-nnjjnj
TOKEN-TYPE: Bearer
authorization: test1
Content-Type: application/test;version=34.0
REQUEST-EXECUTION-TIME: 12
Cache-Control: no-store, must-revalidate
Vary: Accept-Encoding, User-Agent
Connection: close
Set-Cookie: de.test
现在,我只想捕获“访问令牌”的值并将其存储到一个变量中,因此如果我回显该变量或希望将其用于进一步的命令,它将只返回访问令牌的值(test1.testXXX.testXX-…


我很乐意为您提供帮助。

如果您只关注标题,则有多个选项:

ACCESS-TOKEN=`curl -qs -k -I --header "Accept: application/*;version=34.0" \
--header "Authorization: Basic testXXX1" \
--request POST https://test.io/api/sessions | grep ACCESS-TOKEN: | sed 's/ACCESS-TOKEN: //g'`

多个选项,如果您仅在标题之后:

ACCESS-TOKEN=`curl -qs -k -I --header "Accept: application/*;version=34.0" \
--header "Authorization: Basic testXXX1" \
--request POST https://test.io/api/sessions | grep ACCESS-TOKEN: | sed 's/ACCESS-TOKEN: //g'`

结果可能会在每行末尾包含一个回车符,因此您可能需要向管道中添加类似于
|tr-d'\r'
的内容来删除它。结果可能会在每行末尾包含一个回车符,因此您可能需要向管道中添加类似于
|tr-d'\r'
的内容来删除它。