代码之家  ›  专栏  ›  技术社区  ›  Logan Lee

错误jq:传递给--argjson的JSON文本无效

  •  0
  • Logan Lee  · 技术社区  · 2 年前

    考虑

    $ keys='[["key1","a"],["key2","b"]]' jq -c --argjson keys "$keys" '.[] | [getpath($keys[])]' <<<$'[{"key1":{"a":1},"key2":{"b":2}}] [{"key1":{"a":3},"key2":{"b":4}}]'
    

    我期望产量

    [1,2]
    [3,4]
    

    但我在定义时似乎做错了什么 argjson .我得到一个错误:

    jq: invalid JSON text passed to --argjson
    

    我做错了什么?谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   peak    2 年前

    您要么缺少分号(或等效分号),要么误解了shell变量。

    1. 用分号:
    keys='[["key1","a"],["key2","b"]]' ; jq -c -n --argjson keys "$keys" '$keys'
    
    1. 使用shell变量:
    keys='[["key1","a"],["key2","b"]]' jq -c -n 'env.keys | fromjson'