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

问题描述

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

这是我的带有一些测试参数的 curl 命令: curl -k -I --header "Accept: application/*;version=34.0" --header "Authorization: Basic testXXX1" --request POST https://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

现在我只想捕获“Access-Token”的值并将其存储到一个变量中,因此如果我回显该变量或想将其用于进一步的命令,它只会返回我的访问令牌的值( 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'`

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...