unset
एक तत्व निकालता है। यह शेष तत्वों को फिर से नहीं बनाता है।
हम declare -p
वास्तव में देखने के लिए उपयोग कर सकते हैं numbers
:
$ unset "numbers[i]"
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
numbers
अब एक तत्व है निरीक्षण करें 4
।
एक और उदाहरण
का निरीक्षण करें:
$ a=()
$ a[1]="element 1"
$ a[22]="element 22"
$ declare -p a
declare -a a=([1]="element 1" [22]="element 22")
ऐरे के a
पास 21 के माध्यम से कोई तत्व 2 नहीं है। बैश को सरणी सूचकांकों के लगातार होने की आवश्यकता नहीं है।
सूचकांकों के एक नयाकरण के लिए मजबूर करने के लिए सुझाई गई विधि
आइए numbers
अनुपलब्ध तत्व के साथ सरणी से शुरू करें 4
:
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
यदि हम चाहते हैं कि सूचकांकों को बदलना है, तो:
$ numbers=("${numbers[@]}")
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [4]="69" [5]="8" [6]="7" [7]="1")
अब एक तत्व संख्या है 4
और इसका मूल्य है 69
।
एक कदम में एक तत्व और रेनमर सरणी को हटाने के लिए वैकल्पिक विधि
फिर से, चलो परिभाषित करते हैं numbers
:
$ numbers=(53 8 12 9 784 69 8 7 1)
जैसा कि टिप्पणियों में टोबी स्पाइट द्वारा सुझाया गया है , चौथे तत्व को हटाने की एक विधि और शेष तत्वों को एक चरण में सभी को फिर से लिखना है:
$ numbers=("${numbers[@]:0:4}" "${numbers[@]:5}")
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [4]="69" [5]="8" [6]="7" [7]="1")
जैसा कि आप देख सकते हैं, चौथा तत्व हटा दिया गया था और सभी शेष तत्व फिर से बनाए गए थे।
${numbers[@]:0:4}
स्लाइस सरणी numbers
: यह तत्व 0 से शुरू होने वाले पहले चार तत्वों को लेता है।
इसी प्रकार, ${numbers[@]:5}
स्लाइस ऐरे numbers
: इसमें एलिमेंट 5 से शुरू होने वाले और एरे के अंत तक जारी रखने वाले सभी तत्व लगते हैं।
किसी सरणी के सूचकांकों को प्राप्त करना
मान एक सरणी के साथ प्राप्त किया जा सकता ${a[@]}
। उन मूल्यों के अनुरूप होने वाले सूचकांकों (या कुंजियों ) को खोजने के लिए उपयोग करें ${!a[@]}
।
उदाहरण के लिए, numbers
लापता तत्व के साथ फिर से हमारे सरणी पर विचार करें 4
:
$ declare -p numbers
declare -a numbers=([0]="53" [1]="8" [2]="12" [3]="9" [5]="69" [6]="8" [7]="7" [8]="1")
यह देखने के लिए कि कौन से सूचकांक असाइन किए गए हैं:
$ echo "${!numbers[@]}"
0 1 2 3 5 6 7 8
फिर, 4
सूचकांक की सूची से गायब है।
प्रलेखन
से man bash
:
unset
Builtin सरणियों नष्ट करने के लिए प्रयोग किया जाता है। unset name[subscript]
सूचकांक में सरणी तत्व को नष्ट कर देता है subscript
। अनुक्रमित सरणियों के लिए नकारात्मक सदस्यता ऊपर वर्णित के रूप में व्याख्या की जाती है। पाथनेम विस्तार के कारण होने वाले अवांछित दुष्प्रभावों से बचने के लिए देखभाल की जानी चाहिए। unset name
, जहां name
एक सरणी है, या unset name[subscript]
, जहां subscript
है *
या @
, पूरे सरणी को निकालता है।