Ubuntu Shell脚本 - 使用带有args的jq

时间:2017-05-16 20:22:21

标签: json shell jq args

我正在尝试使用jq程序在shell脚本中编辑json文件。 json文件具有以下格式:

{
    "bla": {
        "test1": "True",
        "test2": "False"
    }
}´

我想设置一个参数来定义应该更改“bla”中的哪个值。我想以这样的方式启动脚本:

  

$ ./myscript.sh test1

我试过这样:

#!/bin/sh

jq --arg v $1 '.pokemon.$v = "True"' filters.json > tmp.$$.json && mv tmp.$$.json filters.json

但它不起作用。我收到以下错误:

error: syntax error, unexpected '$', expecting IDENT
.pokemon.$v = "True"
         ^
1 compile error

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

如果要在下标中使用变量,则需要使用[...]下标语法而不是.语法:

.pokemon[$v] = "True"