एक सरणी घोषित करें लेकिन इसे परिभाषित नहीं करें?


14

वहाँ बहुत सारे मार्गदर्शक हैं जो बताते हैं कि किसी ऐरे को कैसे घोषित किया जाए और कैसे परिभाषित किया जाए

foo[0]=abc 
foo[1]=def

जो मैं हासिल करने की कोशिश कर रहा हूं वह एक ऐरे को घोषित करना है लेकिन इसे परिभाषित नहीं करना है क्योंकि इसे तुरंत परिभाषित नहीं करना है, अधिकांश प्रोग्रामिंग भाषाओं में यह कुछ इस तरह दिखाई देगा

int bar[100];

क्या यह शेल स्क्रिप्टिंग भाषा में संभव है?

जवाबों:


23

आप यह निर्दिष्ट कर सकते हैं कि एक चर एक खाली सरणी बनाकर एक सरणी है, जैसे:

var_name=()

var_name फिर एक सरणी होगी जैसा कि रिपोर्ट किया गया है

$ declare -p var_name
declare -a var_name='()'

उदाहरण:

var_name=()
for i in {1..10}; do
    var_name[$i]="Field $i of the list"
done
declare -p var_name
echo "Field 5 is: ${var_name[5]}"

जो कुछ इस तरह का उत्पादन करता है:

declare -a var_name='([1]="Field 1 of the list" [2]="Field 2 of the list" [3]="Field 3 of the list" [4]="Field 4 of the list" [5]="Field 5 of the list" [6]="Field 6 of the list" [7]="Field 7 of the list" [8]="Field 8 of the list" [9]="Field 9 of the list" [10]="Field 10 of the list")'
Field 5 is: Field 5 of the list

minerz029, @am: .. और तत्वों को कैसे परिभाषित किया जाए? मैंने कोशिश की लेकिन केवल एक स्ट्रिंग को परिभाषित / एक्सेस कर सकता हूं .. सरणी वेरिएबल के मानों को परिभाषित करने और एक्सेस करने के लिए एक छोटा उदाहरण बहुत अच्छा होगा ...
सटीक

अच्छी तरह से पता चला कि .. मैं ब्रेसिज़ को याद कर रहा था ..
सटीक

4

उपरोक्त तरीके के अलावा, हम एक ऐलान करके भी बयान दे सकते हैं।

-A विकल्प के साथ घोषित बयान का उपयोग किसी चर के रूप में घोषित करने के लिए किया जा सकता है, लेकिन यह आवश्यक नहीं है। सभी चर स्पष्ट परिभाषा के बिना सरणियों के रूप में इस्तेमाल किया जा सकता है। तथ्य की बात के रूप में, यह प्रतीत होता है कि एक अर्थ में, सभी चर arrays हैं, और बिना सबस्क्रिप्ट के असाइनमेंट "[0]" को असाइन करने के समान है। किसी ऐरे का स्पष्ट ऐलान किया गया है, जो घोषणा की गई है:

declare -a ARRAYNAME

सहयोगी सरणियों का उपयोग कर बनाया जाता है

declare -A name.

घोषणा और पठनीय बिल्डिंग्स का उपयोग करके सरणी चर के लिए विशेषताएँ निर्दिष्ट की जा सकती हैं। प्रत्येक विशेषता किसी सरणी के सभी सदस्यों पर लागू होती है।

आपके द्वारा कोई भी सरणी चर सेट करने के बाद, आप इसे इस प्रकार एक्सेस करते हैं:

${array_name[index]}

1

यह वास्तव में सी के समान है। सी में, आप पसंद के अनुसार सरणी ले सकते हैं। यहां, हम एक खाली सरणी ले सकते हैं और फिर कोई भी मान डाल सकते हैं।

bar=()

सरल लूप के लिए उस एरे में मान लें और उसे प्रिंट करें:

bar=()
for ((i=0;i<10;i++));
do
    read bar[$i]  #Take Value in bar array
    echo bar[$i]
done

आशा करता हूँ की ये काम करेगा।


उत्तर में क्या समस्या है? वोट डाउन क्यों?
मणिरुज्जमां आकाश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.