我正在尝试使用 jq 在 bash 中创建一个给定数组的对象数组。
这是我被困住的地方:
IDS=("baf3eca8-c4bd-4590-bf1f-9b1515d521ba" "ef2fa922-2038-445c-9d32-8c1f23511fe4")
echo "${IDS[@]}" | jq -R '[{id: ., names: ["bob", "sally"]}]'
Run Code Online (Sandbox Code Playgroud)
结果是:
[
{
"id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba ef2fa922-2038-445c-9d32-8c1f23511fe4",
"names": [
"bob",
"sally"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想要的结果:
[
{
"id": "baf3eca8-c4bd-4590-bf1f-9b1515d521ba",
"names": [
"bob",
"sally"
]
},
{
"id": "ef2fa922-2038-445c-9d32-8c1f23511fe4",
"names": [
"bob",
"sally"
]
}
]
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。
使用将 bash 数组拆分为NUL- 分隔的项目,然后使用或printf '%s\0'读取原始流,并在过滤器中使用和 分隔符将它们拆分为数组:-R--raw-inputjqsplit"\u0000"
printf '%s\0' "${IDS[@]}" | jq -Rs '
split("\u0000") | map({id:., names: ["bob", "sally"]})
'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
955 次 |
| 最近记录: |