【发布时间】: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 环境来替换变量