【发布时间】:2018-05-16 19:23:29
【问题描述】:
在 bash 脚本中,当我设置时:
myUrl="https://api.site.com/api/v2/export/123456"
然后运行:
awsAccess=$(curl -X GET $(echo "${myUrl}") \
--header "Accept: application/json" \
--header "Authorization: Bearer myAuthCode")
我得到了正确的 JSON 结果:
{"status":"Complete","total_files":1,"completed_files":1,"file_urls":["@987654321@"]}
但是当我获得这样的令牌时:
myToken=$(echo "${content}" | jq -r '.token' <<< "${myAccessJSON}")
设置myToken=123456
我像这样构建我的 URL 变量:
baseUrl="https://api.site.com/api/v2/export/"
myUrl=$baseUrl$myToken
然后我运行:
awsAccess=$(curl -X GET $(echo "${myUrl}") \
--header "Accept: application/json" \
--header "Authorization: Bearer myAuthCode")
我收到以下 JSON 响应:
{"status":"Pending","total_files":1,"completed_files":0,"file_urls":[]}
其中不包含我需要下载我请求的文件的 URL。更奇怪的是,当我将上面的命令直接输入到 cli 中时,令牌会正确附加,并且我会收到带有所需 URL 的完整响应。如何通过 shell 脚本在我的 cURL 请求中传递与令牌连接的 URL?
【问题讨论】:
-
如果在最后一个
curl命令之前运行,echo $myToken和echo "${myUrl}"会返回什么?GET $(echo "${myUrl}")看起来也是多余的;GET ${myUrl}怎么样? -
jq无法同时读取管道和此处的字符串。 -
echo $myToken成功返回token。 -
嗯...我想你找到了 Will Cain,其中
echo $myUrl返回带有标记的 URL,echo "${myUrl}"返回一个空字符串。我正在尝试您的建议,现在使用GET ${myUrl}。