Como posso atualizar um arquivo json usando jq em um loop como abaixo? O arquivo json precisa ter o .queryToken atualizado e o array .result anexado usando json no corpo da resposta curl
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
A resposta do arquivo e do curl são idênticas em estrutura como no exemplo abaixo
{
"@type": "QueryResult",
"queryToken": "<base64text>",
"result": [
...
]
}
Poderia ser algo como:
(também substituindo your
-k
por sua forma longa--insecure
para não perder de vista o fato de que é inseguro . Também adicionando--fail
forcurl
para relatar erros pelo servidor HTTP; também movi a URL para o final. Tê-lo depois--location
era enganoso, pois não é um argumento para essa opção;--location
é um sinalizador para dizercurl
para seguir redirecionamentos¹; você também deve considerar usar maneiras mais seguras de passar as credenciais, pois passá-las na linha de comando é inseguro).¹ conforme fornecido pelo servidor HTTP no
Location
cabeçalho HTTP. Veja também--location-trusted
para que as--user
credenciais também sejam enviadas ao alvo do redirecionamento (potencialmente perigoso, especialmente quando combinado com-k
aka--insecure
).