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