web-dev-qa-db-fra.com

obtenir le champ de json et l'assigner à une variable dans le script bash?

J'ai un magasin json dans jsonFile

{
  "key1": "aaaa bbbbb",
  "key2": "cccc ddddd"
}

J'ai du code dans mycode.sh:

#!/bin/bash
value=($(jq -r '.key1' jsonFile))
echo "$value"

Après avoir exécuté ./mycode.sh le résultat est aaaa mais si je lance juste jq -r '.key1' jsonFile le résultat est aaaa bbbbb

Quelqu'un pourrait-il m'aider?

19
user3441187

Avec cette ligne de code

value=($(jq -r '.key1' jsonFile))

vous affectez les deux valeurs à un tablea . Notez les parenthèses extérieures () autour de la commande. Ainsi, vous pouvez accéder aux valeurs individuellement ou faire écho au contenu de l'ensemble du tableau.

$ echo "${value[@]}"
aaaa bbbb

$ echo "${value[0]}"
aaaa

$ echo "${value[1]}"
bbbb

Depuis que vous avez fait écho $value sans spécifier la valeur que vous souhaitez obtenir, vous obtenez uniquement la première valeur du tableau.

21
Saucier