jq 필터링 컬-'문자열로 번호를 색인화할 수 없습니다'

jq 필터링 컬-'문자열로 번호를 색인화할 수 없습니다'

특정 필드를 가져와 변수에 넣기 위해 jq로 컬 요청을 필터링하려고 합니다. 처음에는 다음과 같은 기본 컬 요청을 사용했습니다.

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

내 사용자 이름과 비밀번호를 제공하고 'TEST'라는 용어가 몇 번이나 존재하는지 계산하여 예쁜 json으로 반환됩니다. 이 응답은 myResponse라는 변수에 저장됩니다.

jq를 사용하여 이를 필터링하여 json에서 특정 카운트 값을 가져왔습니다.

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

이것은 효과가 있었고 나에게 번호를 제공했습니다.

그래서 이제 좀 실험해보고 싶었습니다. 컬 요청에서 응답을 받는 것 외에도 응답 코드(200, 404 등)도 검색하고 싶었습니다. 그래서 컬 요청을 다음과 같이 조정했습니다.

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에 파이프하면 작동했습니다.

관련 정보