Bạn có thể sử dụng split + global (điều gì xảy ra khi bạn để lại một bản mở rộng không được trích dẫn trong ngữ cảnh danh sách). Nó cản trở chúng ta hầu hết thời gian, sẽ thật xấu hổ nếu không sử dụng nó khi chúng ta thực sự cần nó:
IFS=,
set -o noglob
ARR=($VAR) # split+glob with glob disabled, and split using , as delimiter
Đó là một chút ít phức tạp hơn so với việc viết một tệp tạm thời và sau đó gọi readarraynó như trong readarray <<< "$string"cách tiếp cận (cũng lưu ý rằng readarray -dcần một phiên bản rất gần đây bash).
Lưu ý rằng mặc dù Strong IFS(viết tắt của separator ), mà hoạt động theo cách tương tự như readarrayở chỗ a,,b,là chia thành "a", ""và "b"chỉ.
Đối với một toán tử chia tách thực sự, bạn có thể sử dụng zshthay thế:
ARR=("${(@s:,:)VAR}")
( @dấu ngoặc kép và dấu ngoặc kép để giữ nguyên các phần tử rỗng).
"What is the meaning of the latest $ symbol?"