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

时间:2018-03-01 11:10:46

标签: linux shell jq

我在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”

1 个答案:

答案 0 :(得分:1)

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

jq -r --arg var1 $var1 --arg var2 $var2 '(.[].appId="\($var1)-\($var2)")' service.json