cURL读取外部变量

cURL读取外部变量,curl,Curl,我无法将变量推入用于cURL查询的bash脚本中 我正在使用此命令生成一个api令牌,并将该令牌粘贴到一个文件中: curl-k-v-X POST--用户管理员:pass |&egrep-i'(X-auth | error)| sed's/*X/X/'| grep访问令牌| awk'{print$2}'>令牌.file token.file的结果如下所示:237c3364-228a-475f-bf74-3b6822b53a31 我创建了一个从token.file读取令牌的变量:export to

我无法将变量推入用于cURL查询的bash脚本中
我正在使用此命令生成一个api令牌,并将该令牌粘贴到一个文件中:
curl-k-v-X POST--用户管理员:pass |&egrep-i'(X-auth | error)| sed's/*X/X/'| grep访问令牌| awk'{print$2}'>令牌.file

token.file的结果如下所示:237c3364-228a-475f-bf74-3b6822b53a31
我创建了一个从token.file读取令牌的变量:export tokenkey=$(cat token.file)

此令牌稍后将用于GET/POST/PUSH,但我无法将其推入cURL。
一个例子是:
curl-k-X GET”“-H”accept:application/json“-H”X-auth-access-token“${tokenkey}”

我得到这个错误:{“error”:{“category”:“FRAMEWORK”,“messages”:[{“description”:“找不到访问令牌”}],“severity”:“error”}

它似乎没有正确读取变量。
我不知道如何在curl中定义变量以便正确读取令牌。

不,没有证据表明它没有正确读取变量。有证据表明您没有遵循curl选项和shell语法的规范

首先,HTTP头的语法(主要在curl中使用
-H/--header
)指定,需要在头名称和值之间使用冒号。对于
-H“accept:application/json”
您这样做是正确的,但是对于
-H”X-auth-access-token…
,您这样做是不正确的。诚然,curl提供一条错误消息而不仅仅是忽略错误项会更有帮助

其次,看起来您正试图在头值中包含双引号,这是HTTP中某些头值或部分所必需的,但您使用的语法无法实现这一点

-H "X-auth-access-token "${tokenkey}""
#                       ^           ^ these marks are NOT part of the data
#  ^--------------------^ instead this part is quoted _to the shell_ 
#                        ^---------^ this is NOT quoted, which for a variable value
#                                    is USUALLY unsafe, but for THIS value works
#                                   ^^ and this is quoted, but empty
对于这个(UUID格式)值,您实际上不需要在标头中发送引号,但是当您确实需要或想要它们时,您应该使用它们

-H "X-auth-access-token: \"${tokenkey}\""
# this sends the name WITH the colon, then the value WITH quotemarks around it

仅供参考,您从第一个命令中的响应解析令牌的过程可能会简单得多,但您没有询问(或给出所需的示例数据)

您是对的,这是正确的语法:X-auth-access-token:我不需要引号。更正后,一切正常。