Передача переменной оболочки bash в фильтр jq
Попытка передать переменную оболочки bash в фильтр jq
JSON:
{
"server1": {
"port": 3333,
"name": "foo",
"timesincelast": 248054
},
"server2": {
"port": 4444,
"name": "bar",
"timesincelast": 248054
}
}
Команда Bash пытается выполнить:
servername='server1'
jq --arg servername "$servername" '.$servername .port'
Но получаю ошибку
jq: error: syntax error, unexpected '$' (Unix shell quoting issues?) at
<top-level>, line 1:
Но прямая замена работает
jq '.server1 .port'
1 ответ
Решение
Вы могли бы написать:
.[$servername] | .port
или просто:
.[$servername].port