คุณสามารถใช้ 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?"