如何使用 jq 循环更新 json 文件(如下所示)?json 文件需要在 curl 响应主体中使用 json 更新 .queryToken 并附加 .result 数组
while true
do
curl -k --location 'https://api.../queryMore' \
--user "uname:pswd" \
--data "$(jq '.queryToken' Process.json)" |
jq '{
numberOfResults: .numberOfResults,
queryToken: .queryToken,
result: .result
}'
#update .queryToken in Process.json and append .result to .result in Process.json
#break if no .queryToken
done
文件和 curl 响应的结构相同,如下例所示
{
"@type": "QueryResult",
"queryToken": "<base64text>",
"result": [
...
]
}
可能是这样的:
-k
(也用它的长格式替换你的--insecure
,以免忽视它不安全的事实。还添加了报告HTTP 服务器的错误;我还将 URL 移到了末尾。将它放在后面会产生误导,因为它不是 该选项的参数;是一个标志,用于告诉遵循重定向¹;您还应该考虑使用更安全的方式传递凭据,因为在命令行上传递它们是不安全的)。--fail
curl
--location
--location
curl
¹ 由 HTTP 服务器在
Location
HTTP 标头中提供。另请参阅 以了解要发送到重定向目标的凭据(与 aka 结合使用时可能存在--location-trusted
危险)。--user
-k
--insecure