【发布时间】:2018-03-01 11:10:45
【问题描述】:
我的 shell 中导出了两个变量 var1 和 var2。
var1=root
var2=webserver
我想要一个 jq 查询,它可以用 JSON 文件中的给定值替换 JSON 键。类似的,
jq -r --arg var1 $var1 --arg var2 $var2 '(.[].appId=$var1-$var2)' service.json
var1 和 var2 不能相减的错误。但我希望将变量替换为$var1-$var2 作为字符串。
我尝试使用"-",但它给出了编译错误。
service.json 内容如下。
[ {
"appId": "Eternal Flame",
"age": 1000000,
"secretIdentity": "Unknown",
"powers": [
"Immortality",
"Heat Immunity",
"Inferno",
"Teleportation",
"Interdimensional travel"
]
} ]
appId 值应替换为“root-webserver”
【问题讨论】:
-
有什么理由分开传递这两个值,而不是提前组合它们?
jq -r --arg newId "$var1-$var2" '(.[].appID=$newID)' service.json? -
是的,没有具体原因。这个解决方案看起来很棒。