繁体   English   中英

使用 jq 从 Bash 数组创建对象数组

[英]Creating Array of Objects from Bash Array using jq

我正在尝试使用 jq 在 bash 中给定一个数组,在 bash 中创建一个对象数组。

这是我被困的地方:

IDS=("baf3eca8-c4bd-4590-bf1f-9b1515d521ba" "ef2fa922-2038-445c-9d32-8c1f23511fe4")
echo "${IDS[@]}" | jq -R '[{id: ., names: ["bob", "sally"]}]'

结果是:

[
   {
     "id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba ef2fa922-2038-445c-9d32-8c1f23511fe4",
     "names": [
       "bob",
       "sally"
     ]
   }
]

我想要的结果:

[
   {
     "id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba",
     "names": [
       "bob",
       "sally"
     ]
   },
   {
     "id": "ef2fa922-2038-445c-9d32-8c1f23511fe4",
     "names": [
       "bob",
       "sally"
     ]
   }
]

任何帮助将非常感激。

使用printf '%s\\0'将 bash 数组拆分为NUL分隔项,然后使用-R--raw-input读取原始流,并在jq过滤器中使用split和分隔符"\"

printf '%s\0' "${IDS[@]}" | jq -R '
  split("\u0000") | map({id:., names: ["bob", "sally"]})
'
for id in "${IDS[@]}" ; do
  echo "$id"
done | jq -nR '[ {id: inputs, names: ["bob", "sally"]} ]'

或作为单线:

printf "%s\n" "${IDS[@]}" | jq -nR '[{id: inputs, names: ["bob", "sally"]}]'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM