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



考虑

$ 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

我做错了什么?谢谢

您要么缺少分号(或等效冒号),要么误解了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'