Oto moja config.json:Przekazywanie argumentów do filtra JQ
{
"env": "dev",
"dev": {
"projects" : {
"prj1": {
"dependencies": {},
"description": ""
}
}
}
}
Oto moje polecenia bash:
PRJNAME='prj1'
echo $PRJNAME
jq --arg v "$PRJNAME" '.dev.projects."$v"' config.json
jq '.dev.projects.prj1' config.json
Wyjście:
prj1
null
{
"dependencies": {},
"description": ""
}
Więc $ PRJNAME jest PRJ1 , ale pierwsze wywołanie wyprowadza tylko null
.
Czy ktoś może mi pomóc?
Próbowałeś usuwania ' "'' $ v' wokół? Dlaczego nie używasz powłoki wypełnić zmiennej jak 'JQ" .dev.projects. $ PRJNAME”config.json'? –
@RamboRamon, użycie powłoki do wypełnienia zmiennej jest podatne na błędy - zastanów się, czy zawiera ona znaki takie jak cytaty, które muszą zostać zmienione.) Jq' ma gwarantowane generowanie poprawnego składniowo wyniku –