jq 출력을 변수로 변환하는 방법

jq 출력을 변수로 변환하는 방법

이게 내 코드야

curl random args
"link" | jq

그리고 그것이 주는 것은

{
  "id": "961438154596153411",
  "username": "testing",
  "avatar": "a9000496add364b16af27e2f583a2e1e0f",
  "discriminator": "1"
}

"$id"를 echo할 수 있도록 bash 변수로 어떻게 저장하고 테스트하려면 961438154596153411 또는 echo "$username"을 제공합니까?

해결 방법: 더 나은 접근 방식은 컬 입력을 json으로 저장한 다음 jq와 함께 사용하여 여러 번 요청할 필요가 없도록 하는 것입니다. (이것이 어리석은 질문이라면 죄송합니다. 저는 bash 및 jq를 처음 접했습니다.)

답변1

961438154596153411json에서 추출하려면 파일을 파이프하세요.jq '.id'

예:

$ jq '.id' << EOF
{
  "id": "961438154596153411",
  "username": "testing",
  "avatar": "a9000496add364b16af27e2f583a2e1e0f",
  "discriminator": "1"
}
EOF

산출

"961438154596153411"

따옴표 없이 원할 경우 -r원시 데이터를 사용하세요.

어쨌든 해당 숫자를 bash 변수에 넣으려면 다음을 수행합니다.

$ id=$(curl random args "link" | jq -r ".id")
$ echo "$id"
961438154596153411

관련 정보