passer des arguments au filtre jq
Voici ma config.json:
{
"env": "dev",
"dev": {
"projects" : {
"prj1": {
"dependencies": {},
"description": ""
}
}
}
}
Voici mes commandes bash:
PRJNAME='prj1'
echo $PRJNAME
jq --arg v "$PRJNAME" '.dev.projects."$v"' config.json
jq '.dev.projects.prj1' config.json
La sortie:
prj1
null
{
"dependencies": {},
"description": ""
}
Donc $PRJNAME est prj1, mais la première invocation sorties seulement null
.
Quelqu'un peut m'aider?
source d'informationauteur lisi4ok
Vous devez vous connecter pour publier un commentaire.
L'jq programme
.dev.projects."$v"
dans votre exemple va littéralement essayer de trouver une clé nommée"$v"
. Essayer ce qui suit:vous pouvez utiliser trop
--argjson
lorsque vous faites votre json.Comme demandé dans un commentaire ci-dessus, il y a un moyen de passer plusieurs argumets.
Peut-être il ya un moyen plus élégant, mais il fonctionne.
bien sûr, vous pouvez combiner ces!