代码之家  ›  专栏  ›  技术社区  ›  Max R.

使用jq通过变量获取json字段值

  •  0
  • Max R.  · 技术社区  · 6 年前

    我试图读取一个json变量的字段值,字段名也存储在一个变量中。

    $ jsonVar=`cat test-config.json`
    $ echo $jsonVar
    { "server-test": "xxx", "server2-test": "xxx", "server3-test": "xxx"}
    $ echo $it
    server-test
    $ itVersion=$(jq --arg test "${it}" '.["${test}"]' <<< $jsonVar);
    $ echo $itVersion
    null
    

    $itVersion 现在应该有 "server-test" null ,看来我的JQ命令是错误的,但我不明白为什么。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Aaron    6 年前

    变量只能作为 $var ,不是 ${var} . 另外,它被扩展为一个带引号的字符串,所以用双引号括起来是多余的。

    itVersion=$(jq --arg test "${it}" '.[$test]' test-config.json)