आप स्प्लिट + ग्लोब का उपयोग कर सकते हैं (तब क्या होता है जब आप सूची के संदर्भों में एक विस्तार छोड़ देते हैं)। यह ज्यादातर समय हमारे रास्ते में आता है, जब हमें वास्तव में इसकी आवश्यकता होती है तो इसका उपयोग नहीं करना शर्म की बात होगी:
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?"