คุณสามารถใช้ split + glob (เกิดอะไรขึ้นเมื่อคุณปล่อยส่วนขยายโดยไม่ระบุในบริบทรายการ) มันได้รับในทางของเราเวลาส่วนใหญ่มันจะเป็นความอัปยศที่จะไม่ใช้เมื่อเราต้องการมัน:
IFS=,
set -o noglob
ARR=($VAR) # split+glob with glob disabled, and split using , as delimiter
นั่นเป็นเรื่องที่ซับซ้อนน้อยกว่าการเขียนไฟล์ชั่วคราวแล้วโทรหาreadarrayมันเหมือนในreadarray <<< "$string"แนวทาง (โปรดทราบว่าreadarray -dต้องใช้เวอร์ชันล่าสุดของbash)
หมายเหตุว่าแม้จะมีSในIFS(ซึ่งหมายถึงคั่น ) ที่ทำงานเช่นเดียวกับreadarrayในการที่a,,b,จะแบ่งออกเป็น"a", ""และ"b"เพียง
สำหรับผู้ดำเนินการแยกที่แท้จริงคุณสามารถใช้zshแทน:
ARR=("${(@s:,:)VAR}")
( @เครื่องหมายคำพูดและคู่เพื่อรักษาองค์ประกอบที่ว่างเปล่า)
"What is the meaning of the latest $ symbol?"