jq-Filterung von curl – „Zahl kann nicht mit Zeichenfolge indiziert werden“

jq-Filterung von curl – „Zahl kann nicht mit Zeichenfolge indiziert werden“

Ich versuche, eine Curl-Anfrage mit jq zu filtern, um bestimmte Felder abzurufen und sie in Variablen einzufügen. Anfangs habe ich eine einfache Curl-Anfrage wie diese verwendet:

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

Ich gebe meinen Benutzernamen und mein Passwort ein und erhalte eine Zählung, wie oft der Begriff „TEST“ vorkommt. Die Antwort wird in hübschem JSON zurückgegeben. Diese Antwort wird in eine Variable namens myResponse eingefügt.

Ich habe jq verwendet, um dies zu filtern und einen bestimmten Zählwert aus dem JSON zu erhalten:

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

Das hat funktioniert und ich habe eine Nummer bekommen.

Jetzt wollte ich ein bisschen experimentieren. Ich wollte nicht nur die Antwort der Curl-Anfrage erhalten, sondern auch den Antwortcode (200, 404 usw.). Also habe ich meine Curl-Anfrage wie folgt angepasst:

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

Dadurch wurde sowohl die JSON-Antwort erfolgreich zurückgegeben als auch anschließend der HTTP-Antwortcode als Zahl.

Sobald dies jedoch an jq übergeben wird, erhalte ich die folgende Fehlermeldung:

jq: error: Cannot index number with string

Wie behebe ich diesen Fehler? Als es nur JSON war, hat jq es problemlos gehandhabt, aber sobald dieser Antwortcode am Ende hinzugefügt wurde, kann es ihn nicht mehr analysieren.

Danke

Antwort1

Die Variable, die ich in jq weitergeleitet habe, enthielt sowohl JSON als auch HTTP. Sie müssen die Variable zunächst mit tailund in JSON und HTTP aufteilen head. Nachdem ich reines JSON in jq weitergeleitet habe, hat es funktioniert.

verwandte Informationen