Я настраиваю файл конфигурации json следующим образом
{
"current": "config1",
"config1": {
"p1": "val1-1",
"p2": "val1-2"
},
"config2": {
"p1": "val2-1",
"p2": "val2-2"
}
}
Я хотел бы получить «текущий» конфиг с bash и jq. На данный момент я использую:
#!/usr/bin/env bash
C=`jq '.current' $1`
D=`eval jq '."$C"' $1`
echo " ------ D is $D"
echo $D | jq '.p1'
Есть ли прямой трюк jq filter/key для получения того же результата?
Вам просто нужно использовать синтаксис итератора значения объекта .[]
, чтобы сначала позволить .current
расшириться до его составного значения, а затем выражение станет ."config1"
, которое соответствует ключу config1
jq '.[.current]'