在shell脚本中转 义jq表达式中的符号

问题描述 投票:1回答:1

我在shell中导出了两个变量var1var2

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”

linux shell jq
1个回答
1
投票

使用-尝试对项目进行算术减法。我建议使用String interpolation。它会自动将输入转换为字符串:

jq -r --arg var1 $var1 --arg var2 $var2 '(.[].appId="\($var1)-\($var2)")' service.json 
© www.soinside.com 2019 - 2024. All rights reserved.