übergeben von Argumenten an jq-filter

Hier ist meine config.json:

{
    "env": "dev",
    "dev": {
        "projects" : {
            "prj1": {
                "dependencies": {},
                "description": ""
            }
        }
    }
}

Hier sind meine bash-Befehle:

PRJNAME='prj1'

echo $PRJNAME

jq --arg v "$PRJNAME" '.dev.projects."$v"' config.json 
jq '.dev.projects.prj1' config.json 

Die Ausgabe:

prj1
null
{
  "dependencies": {},
  "description": ""
}

Also $PRJNAME ist prj1, aber der erste Aufruf gibt nur null.

Kann mir jemand helfen?

Haben Sie versucht, entfernen die " um $v? Warum bist du nicht mit der Schale zu füllen, die variable wie jq ".dev.projects.$PRJNAME" config.json?
verwenden der shell zum füllen der Variablen ist fehleranfällig-man denke etwa wenn es enthält Zeichen wie Anführungszeichen, die müssen escaped werden. jq ist garantiert zu generieren syntaktisch gültige Ausgabe.

InformationsquelleAutor lisi4ok | 2016-01-12

Schreibe einen Kommentar