【问题标题】:How to add bash variable to json file? [duplicate]如何将bash变量添加到json文件? [复制]
【发布时间】:2020-07-23 17:32:32
【问题描述】:

我有一个daemon.json 文件,其中包含如下一行

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

我正在尝试使用一个变量来一般更改为当前 IP 地址。通常在 bash 脚本中 我会存储在一个变量中,例如

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

如何在 JSON 文件中使用一种变量?

【问题讨论】:

  • jq -cn --arg myip "$(hostname -I | awk '{print $1}')" '{ "insecure-registries":["\($myip):8123"] }'

标签: json bash


【解决方案1】:

如果您可以访问 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 本身并不适合进行这样的替换。

【讨论】:

  • 嗯。您是否重新打开了此问题,还是我误以为我已将问题作为重复问题关闭了? (我没有看到任何需要确认的编辑历史记录)。
  • 我确实重新打开了;当你关闭它时,我正在输入它的一半:) 我认为副本并没有完全捕捉到 OP 想要做什么。
  • 嗯。我确实仍然认为它与许多其他“如何从 bash 生成 JSON?”重复。问题,但是...... que será,será。
  • @CharlesDuffy 我已经检查了你提到的问题,但实际上并不相同。我真的尽量避免重复
  • @chepner 我无权访问jq :/
猜你喜欢
  • 2016-02-11
  • 2018-10-13
  • 1970-01-01
  • 2019-10-24
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多