我有一个像这样的json文件:
{
"name": "Job",
"type": "xdb",
"typeLogoUrl": "public/app/plugins/logo.svg",
"access": "proxy",
"url": "http://xdb:80",
"password": {},
"user": "xx",
"database": "Job",
"basicAuth": true,
"basicAuthUser": "xx",
"basicAuthPassword": {},
"withCredentials": true,
"isDefault": false,
"jsonData": {},
"secureJsonFields": null
}
现在我要做的就是将环境变量传递给密钥密码和basicAuthPassword并生成新的json文件,如下所示:
{
"name": "Job",
"type": "xdb",
"typeLogoUrl": "public/app/plugins/logo.svg",
"access": "proxy",
"url": "http://xdb:80",
"password": "password" ,
"user": "xx",
"database": "Job",
"basicAuth": true,
"basicAuthUser": "xx",
"basicAuthPassword": "password",
"withCredentials": true,
"isDefault": false,
"jsonData": {},
"secureJsonFields": null
}
我试图像下面那样替换至少一个键,这给了我空值。
/usr/local/bin/jq -n --arg "password" '.password = $arg' < input.json
有人可以建议我如何实现这一目标吗?
答案 0 :(得分:1)
从安全角度考虑,在命令行中传递密码不是一个好主意,但我希望您知道自己在做什么。
假设,您需要像这样修改jq
命令:
jq --arg p "password" '.password = $p | .basicAuthPassword = $p' < input.json
答案 1 :(得分:1)
如果密码已经是一个环境变量(虽然可能不是一个好主意),那么为了避免在命令行中暴露它,可以使用env
内置命令,如下所示:
.password = env.password
等
要考虑的另一种方法是将密码放入一个临时文件,然后使用--argfile命令行选项。或者,如果您的外壳支持,--argfile pw <(echo "\"$password\"")