我正在嘗試使用 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"
]
}
]
任何幫助將非常感激。
uj5u.com熱心網友回復:
使用 將 bash 陣列拆分為帶NUL分隔符的專案printf '%s\0',然后使用-R或讀取原始流,--raw-input并在jq過濾器中使用split分隔符將它們拆分為陣列"\u0000":
printf '%s\0' "${IDS[@]}" | jq -Rs '
split("\u0000") | map({id:., names: ["bob", "sally"]})
'
uj5u.com熱心網友回復:
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"]}]'
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/350258.html
