J'ai écrit un script pour récupérer une certaine valeur de . Il fonctionne si je fournis la valeur à jq
, mais la variable ne semble pas fonctionner (ou je ne sais pas comment l'utiliser).
Réponses
Trop de publicités?Envisagez également de passer dans la variable shell (EMAILID) comme une variable jq (ici aussi EMAILID, pour des raisons d'illustration):
post-scriptum
Pour mémoire, une autre possibilité serait d'utiliser la fonction de jq `` pour accéder aux variables de l'environnement. Par exemple, considérez cette séquence de commandes de bash :
La sortie est une chaîne JSON :
C'est une citation problème, vous devez :
projectID=$(
cat file.json | jq -r ".resource[] | select(.username=='$EMAILID') | .id"
)
Si vous mettez des guillemets simples pour délimiter la chaîne principale, le shell prend $EMAILID
littéralement.
"Double quote" chaque littéral qui contient des espaces et des caractères de remplacement et chaque extension: "$var"
, "$(command "$var")"
, "${array[@]}"
, "a & b"
. Utiliser 'single quotes'
pour le code ou littéral $'s: 'Costs $5 US'
, ssh host 'echo "$HOSTNAME"'
. Voir
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words
Une autre façon d'y parvenir est avec le drapeau jq "--arg". En utilisant l'exemple original :
Voir ici, qui est l'endroit où j'ai trouvé cette solution: https://github.com/stedolan/jq/issues/626