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

Error jq: invalid JSON text passed to --argjson

考虑

$ 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

我做错了什么?谢谢!

您要么缺少 semi-colon(或等效项),要么误解了 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'