jq過濾curl-'無法用字串索引數字'

jq過濾curl-'無法用字串索引數字'

我正在嘗試使用 jq 過濾curl 請求以獲取特定字段並將它們放入變數中。最初,我使用的是基本的捲曲請求,如下所示:

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

我提供了我的用戶名和密碼,並計算了術語「TEST」出現的次數,該計數以漂亮的 json 格式返回。該回應被放入名為 myResponse 的變數中。

我使用 jq 來過濾它以從 json 中獲取特定的計數值:

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

這很有效,並為我提供了一個號碼。

所以現在我想嘗試一下。除了從curl請求獲取回應之外,我還想檢索回應代碼(200、404等)。所以我將我的curl請求調整為以下內容:

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

這成功地傳回了 JSON 回應,然後它以數字形式傳回了 http 回應碼。

但是,一旦將其傳遞給 jq,我就會收到以下錯誤:

jq: error: Cannot index number with string

我該如何解決這個錯誤?當它只是 json jq 時處理得很好,但是一旦將此響應代碼添加到末尾,它就無法解析它。

謝謝

答案1

我透過管道輸送到 jq 的變數中既有 JSON 又有 HTTP。您必須先使用tail和將變數拆分為 JSON 和 HTTP head。一旦我將純 JSON 透過管道傳輸到 jq 中,它就起作用了。

相關內容