Как добавить переменную bash в файл json? - PullRequest
1 голос
/ 11 апреля 2020

У меня есть файл daemon.json, который содержит одну строку, как показано ниже

{ "insecure-registries":["192.X.X.X:8123"] }

Я пытаюсь использовать переменную для общего изменения текущего IP-адреса. В скрипте bash обычно я храню переменную типа

  myip=hostname -I | awk '{print $1}'
 { "insecure-registries":["$myip:8123"] }

Как использовать переменную типа в файле JSON?

1 Ответ

1 голос
/ 11 апреля 2020

Если у вас есть доступ к jq, я бы рекомендовал хранить не JSON, а jq фильтр, например

{"insecure-registries": ["\($ip):8123"]}

. Предположим, что предыдущий файл находится в файле с именем foo.jq; затем, используя jq, как указано ниже, производит JSON из фильтра.

$ myip=$(hostname -I | awk '{print $1}')  # 192.0.2.42, e.g.
$ jq -nf foo.jq --arg ip "$myip"
{
  "insecure-registries": [
    "192.0.2.42:8123"
  ]
}

JSON само не имеет понятия подстановки, а bash само по себе не является не очень подходит для таких замен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...