【问题标题】:change varible inside json file using bash [duplicate]使用bash更改json文件中的变量[重复]
【发布时间】:2018-08-22 12:40:17
【问题描述】:

我总共有 3 个环境 dev、stag 和 Prod,所有环境都有像这样的 config.json

{
  "braintree": {
    "merchantid": "MERCHANTID",
    "publickey": "PUBLICKEY",
    "privatekey": "PRIVATEKEY"
  },
  "karix": {
    "url": "URL",
    "pass": "PASS",
    "user": "USER"
  },
  "fikarix": {
    "source": "SOURCE"

  },
  "mailgun": {
    "api_key": "API_KEY",
    "domain": "DOMAIN",
    "apikey": "APIKEY"
  },
  "paymentrails": {
    "key": "KEY",
    "environment": "ENVIRONMENT",
    "secret": "SECRET"
  }
}

现在我想使用 shell 脚本将它转换成这样的所有环境

开发环境配置.json

{
  "braintree": {
    "merchantid": "dev_MERCHANTID",
    "publickey": "dev_PUBLICKEY",
    "privatekey": "dev_PRIVATEKEY"
  },
  "karix": {
    "url": "dev_URL",
    "pass": "dev_PASS",
    "user": "dev_USER"
  },
  "fikarix": {
    "source": "dev_SOURCE"

  },
  "mailgun": {
    "api_key": "dev_API_KEY",
    "domain": "dev_DOMAIN",
    "apikey": "dev_APIKEY"
  },
  "paymentrails": {
    "key": "dev_KEY",
    "environment": "dev_ENVIRONMENT",
    "secret": "dev_SECRET"
  }
}

我如何使用sed 或任何其他解决方案来获得这个?

【问题讨论】:

  • 您只是想为每个值添加前缀dev_,还是您有想要替换现有值的一整套开发值?
  • 老实说,最简单的做法就是维护 3 个单独的文件,并在运行时使用合适的文件。
  • @chepner 需要 ci/cd 环境来替换变量

标签: bash shell sed


【解决方案1】:
sed 's/: "/: "dev_/g' config.json

使用sed你可以做到

编辑:

插入密码-i

sed  -i 's/: "/: "dev_/g' config.json 

【讨论】:

  • not working please check then reply - 可能是我见过的对试图帮助你的人最随意粗鲁的回应。 “谢谢”以及“不起作用”的描述如何?想象一下有人免费给了你一辆车,你转身告诉他们“它不工作,修好然后再找我”。
  • 在某些情况下使用正则表达式或简单替换来处理 JSON 之类的结构化格式可能有效,也可能无效,但从长远来看,我建议使用真正理解语法的解析器。
猜你喜欢
  • 2018-03-12
  • 2018-08-10
  • 1970-01-01
  • 2019-04-28
  • 2011-04-22
  • 2018-06-12
  • 1970-01-01
  • 2018-01-26
  • 2012-10-17
相关资源
最近更新 更多