जवाबों:
हाँ वहाँ है:
ARRAY=()
ARRAY+=('foo')
ARRAY+=('bar')
उस संदर्भ में जहां एक असाइनमेंट स्टेटमेंट शेल वैरिएबल या एरे इंडेक्स (देखें Arrays) के लिए एक मान निर्दिष्ट कर रहा है, '' = = 'ऑपरेटर को वेरिएबल के पिछले मूल्य को जोड़ने या जोड़ने के लिए इस्तेमाल किया जा सकता है।
ARRAY
वास्तविक चर नाम के लिए सिर्फ एक प्लेसहोल्डर है। यहां तक कि अगर आपके सरणी सूचकांक अनुक्रमिक नहीं हैं, तो इसके साथ +=
${myarray[@]}
- एरे वेरिएबल को संदर्भित करना जैसे कि यह एक स्केलर था, इसके एलिमेंट को एक्सेस करने के समान है; दूसरे शब्दों में: $myarray
रूप में ही है ${myarray[0]}
।
जैसा कि डंब गय बताते हैं, यह नोट करना महत्वपूर्ण है कि क्या सरणी शून्य पर शुरू होती है और अनुक्रमिक है। चूंकि आप गैर-सन्निहित सूचकांकों ${#array[@]}
को असाइन और अनसेट कर सकते हैं , इसलिए हमेशा ऐरे के अंत में अगला आइटम नहीं होता है।
$ array=(a b c d e f g h)
$ array[42]="i"
$ unset array[2]
$ unset array[3]
$ declare -p array # dump the array so we can see what it contains
declare -a array='([0]="a" [1]="b" [4]="e" [5]="f" [6]="g" [7]="h" [42]="i")'
$ echo ${#array[@]}
7
$ echo ${array[${#array[@]}]}
h
यहां बताया गया है कि अंतिम इंडेक्स कैसे प्राप्त करें:
$ end=(${!array[@]}) # put all the indices in an array
$ end=${end[@]: -1} # get the last one
$ echo $end
42
यह दिखाता है कि किसी सरणी के अंतिम तत्व को कैसे प्राप्त किया जाए। आप अक्सर इसे देखेंगे:
$ echo ${array[${#array[@]} - 1]}
g
जैसा कि आप देख सकते हैं, क्योंकि हम एक विरल सरणी के साथ काम कर रहे हैं, यह अंतिम तत्व नहीं है। यह विरल और सन्निहित सरणियों पर काम करता है, हालांकि:
$ echo ${array[@]: -1}
i
${array[@]: start[:count]}
रिटर्न काउंट एलिम्स। या, यदि निर्दिष्ट नहीं है, तो सभी शेष एल.एम. निम्नलिखित हाथी पर शुरू करना: - यदि प्रारंभ> = 0: हाथी से। जिसका सूचकांक> = प्रारंभ है। - यदि प्रारंभ करें <0: हाथी से। किसका सूचकांक (अंतिम सरणी सूचकांक + 1) - एब्स (प्रारंभ); गुफा: यदि अनुपस्थित (प्रारंभ)> (अंतिम सरणी सूचकांक + 1), एक अशक्त स्ट्रिंग लौटा दी जाती है। यदि गणना निर्दिष्ट की जाती है, तो कई तत्व वापस आ जाते हैं, भले ही उनके सूचकांक शुरू से ही सन्निहित न हों।
${array[-1]}
$ declare -a arr
$ arr=("a")
$ arr=("${arr[@]}" "new")
$ echo ${arr[@]}
a new
$ arr=("${arr[@]}" "newest")
$ echo ${arr[@]}
a new newest
arr=("${arr[@]}" "new")
यदि आप उन में रिक्त स्थान के साथ तत्व हैं
यदि आपकी सरणी हमेशा अनुक्रमिक है और 0 से शुरू होती है, तो आप यह कर सकते हैं:
array[${#array[@]}]='foo'
# gets the length of the array
${#array_name[@]}
यदि आप अनजाने में बराबर चिह्न के बीच रिक्त स्थान का उपयोग करते हैं:
array[${#array[@]}] = 'foo'
तब आपको निम्न के समान त्रुटि प्राप्त होगी:
array_name[3]: command not found
+=
सिंटैक्स (@ e-t172 का उत्तर देखें) (ए) सरल है, और (बी) ऐसे सरणियों के साथ भी काम करता है जो गैर-
+=
जोड़ा गया था, उदाहरण के लिए संस्करण 2
$arr += ($el)
ऐसा लगता है कि अंतरिक्ष द्वारा स्ट्रिंग को विभाजित करना और प्रत्येक तत्वों को जोड़ना है।
अनुक्रमित सरणी के साथ, आप इस तरह से कुछ कर सकते हैं:
declare -a a=()
a+=('foo' 'bar')