Bash 속성을 사용하여 jq 배열에 액세스

Bash 속성을 사용하여 jq 배열에 액세스

bash 속성을 사용하여 json 배열에 액세스할 수 있습니까?

JSON 예:

{
"data": [
    {
        "id": 1, 
        "name": "John"
    }, 
    {
        "id": 2, 
        "name": "Doe"
    },
    ...
}

Bash 예는 아래와 같습니다.

count=0
id=$(cat example.json | jq -r '.data[$count].id')

답변1

변수를 이미 존재하는 것으로 처리하는 --argjson옵션을 사용하십시오.$cntJSON- 인코딩된 값:

$ cnt=0
$ jq --argjson cnt "$cnt" '.data[$cnt]' file.json

산출:

{
  "id": 1,
  "name": "John"
}

--argjson name JSON-text:

이 옵션은 JSON으로 인코딩된 값을 사전 정의된 변수로 jq 프로그램에 전달합니다. 다음을 사용하여 jq를 실행 --argjson foo 123하면 $foo123

답변2

사용큰따옴표변수 보간을 허용하려면 단일 대신:

jq -r ".data[$count].id" example.json

관련 정보