Ви можете використовувати split + glob (що відбувається, коли розширення залиште без котирування у контекстах списку). Це стає у нас більшу частину часу, було б прикро не використовувати його, коли нам насправді це потрібно:
IFS=,
set -o noglob
ARR=($VAR) # split+glob with glob disabled, and split using , as delimiter
Це трохи менш заплутано, ніж написати тимчасовий файл, а потім зателефонувати readarray
на нього, як у readarray <<< "$string"
підході (також зауважте, що readarray -d
потрібна зовсім недавня версія bash
).
Зауважте, що незважаючи на S
in IFS
(що означає роздільник ), він працює так само, як і readarray
в a,,b,
розділеному на "a"
, ""
і "b"
тільки.
Для справжнього оператора розщеплення ви можете використовувати zsh
замість цього:
ARR=("${(@s:,:)VAR}")
( @
подвійні лапки для збереження порожніх елементів).
"What is the meaning of the latest $ symbol?"