jq filtering curl- 'Sayı ile string indekslenemez'


0

Belirli alanları almak ve değişkenlere koymak için bir kıvrılma isteğini jq ile filtrelemeye çalışıyorum. Başlangıçta, bunun gibi temel bir kıvrılma isteği kullanıyordum:

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

Kullanıcı adımı ve şifremi veriyorum ve 'TEST' teriminin kaç kez mevcut olduğuna dair bir rakam alıyorum, ki bu oldukça hoş bir şekilde json olarak döndürülüyor. Bu yanıt myResponse adlı bir değişkene konulur.

Json'dan belirli bir sayım değeri elde etmek için bunu filtrelemek için jq kullandım:

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

Bu çalıştı ve bana bir sayı sağladı.

Şimdi biraz denemek istedim. Curl isteğinden yanıt almanın yanı sıra, yanıt kodunu da (200, 404 vb.) Almak istedim. Böylece curl isteğimi aşağıdakilere uyarladım:

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

Bu başarıyla hem JSON yanıtını verdi, sonra bundan sonra http yanıt kodunu sayı olarak döndürdü.

Ancak, bu bir kez jq 'a iletildiğinde aşağıdaki hatayı alıyorum:

jq: error: Cannot index number with string

Bu hatayı nasıl çözebilirim? Sadece json olduğunda jq gayet iyi idare etti, ancak bu yanıt kodu sona erdikten hemen sonra çözümlenemez.

Teşekkürler


GÜNCELLEME: Çözüm. Sorun benim değişkenimde hem JSON hem de HTTP'nin olması. Yaptığım şey, değişkeni sadece json'a ve sadece http 'e kuyruk ve kafa komutlarını kullanarak ayırmaktı. Sonra saf json'u jq'ye koydum ve işe yaradı.
Xenidious
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.