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