filtragem jq curl- 'Não é possível indexar o número com string'

filtragem jq curl- 'Não é possível indexar o número com string'

Estou tentando filtrar uma solicitação curl com jq para obter campos específicos e colocá-los em variáveis. Inicialmente, eu estava usando uma solicitação curl básica como esta:

myResponse=$(curl -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=TEST")

Estou fornecendo meu nome de usuário e senha e obtendo uma contagem de quantas vezes o termo 'TEST' está presente, o que é retornado em um belo json. Esta resposta é colocada em uma variável chamada myResponse.

Usei jq para filtrar isso e obter um valor de contagem específico do json:

count=`echo $myResponse | jq -r '.count'`

Isso funcionou e me forneceu um número.

Então agora eu queria experimentar um pouco. Além de obter a resposta da solicitação curl, também queria recuperar o código de resposta (200, 404 etc.). Então adaptei minha solicitação curl para o seguinte:

myResponse=$(curl --write-out %{http_code} --silent -u myUsername:myPassword -XGET "https://myWebsite.com/_count?pretty&q=DEBUG")

Isso retornou com êxito a resposta JSON e, depois disso, retornou o código de resposta http como um número.

No entanto, uma vez passado para jq, recebo o seguinte erro:

jq: error: Cannot index number with string

Como resolvo esse erro? Quando era apenas json, jq lidava bem com isso, mas assim que esse código de resposta foi adicionado no final, ele não pode ser analisado.

Obrigado

Responder1

Havia JSON e HTTP na variável que eu estava canalizando para jq. Primeiro você deve dividir a variável em JSON e HTTP usando taile head. Depois de canalizar JSON puro para jq, funcionou.

informação relacionada