Как получить пользовательский ввод в качестве значения в JQ в сценарии оболочки - PullRequest
0 голосов
/ 29 октября 2019

У меня есть файл JSON, из которого я пытаюсь получить значение, используя ниже

[a223180n@363748ln41dk012 ~]$ cat status.json| jq  '.details.server1.status'
"UP"

В моем сценарии у меня есть опция, где пользователь вводит имя сервера. Поэтому мне нужно, чтобы скрипт выбрал это значение и обновил команду jq соответственно, которую я использую ниже, и она не работает.

jq - версия 1.6

[a223180n@363748ln41dk012 ~]$ cat status.json| jq --arg server server1'.details.$server.status'
jq: error: syntax error, unexpected '$', expecting FORMAT or QQSTRING_START (Unix shell quoting issues?) at <top-level>, line 1:
.details.$service.status
jq: 1 compile error

1 Ответ

2 голосов
/ 29 октября 2019
< status.json jq --arg server server1 '.details[$server].status'

Оператор точки - это специальная версия оператора [], которая работает только с клавишами literal . Здесь у вас есть переменная для ключа, поэтому вам нужен оператор [].

...