Anda bisa menggunakan split + glob (apa yang terjadi ketika Anda membiarkan ekspansi tidak dikutip dalam konteks daftar). Itu menghalangi sebagian besar waktu kita, akan memalukan untuk tidak menggunakannya ketika kita benar-benar membutuhkannya:
IFS=,
set -o noglob
ARR=($VAR) # split+glob with glob disabled, and split using , as delimiter
Itu sedikit kurang berbelit-belit daripada menulis file temp dan kemudian memanggilnya readarrayseperti dalam readarray <<< "$string"pendekatan (juga perhatikan bahwa readarray -dperlu versi yang sangat baru bash).
Perhatikan bahwa meskipun Sdalam IFS(yang merupakan pemisah ), itu bekerja dengan cara yang sama seperti readarraydalam yang a,,b,dibagi menjadi "a", ""dan "b"hanya.
Untuk operator pemisahan nyata, Anda bisa menggunakan zsh:
ARR=("${(@s:,:)VAR}")
( @Tanda kutip ganda dan untuk melestarikan elemen kosong).
"What is the meaning of the latest $ symbol?"