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

関連情報