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 -d
precisa de uma versão muito recente bash
).
Note-se que apesar do S
em IFS
(que significa separação ), que funciona da mesma forma que readarray
na 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?"