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 readarray
seperti dalam readarray <<< "$string"
pendekatan (juga perhatikan bahwa readarray -d
perlu versi yang sangat baru bash
).
Perhatikan bahwa meskipun S
dalam IFS
(yang merupakan pemisah ), itu bekerja dengan cara yang sama seperti readarray
dalam 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?"