Você pode usar split + glob (o que acontece quando você deixa uma expansão sem aspas nos contextos da lista). Isso fica no nosso caminho na maioria das vezes, seria uma pena não usá-lo quando realmente precisamos:
IFS=,
set -o noglob
ARR=($VAR) # split+glob with glob disabled, and split using , as delimiter
Isso é um pouco menos complicado do que escrever um arquivo temporário e depois invocá readarray-lo como na readarray <<< "$string"abordagem (observe também que readarray -dprecisa de uma versão muito recente bash).
Note-se que apesar do Sem IFS(que significa separação ), que funciona da mesma forma que readarrayna medida em que a,,b,é dividido em "a", ""e "b"única.
Para um operador de divisão real, você pode usar zsh:
ARR=("${(@s:,:)VAR}")
( @aspas duplas e para preservar os elementos vazios).
"What is the meaning of the latest $ symbol?"