Вы можете использовать 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?"