बैश ऐरे को समझें - उन्हें कैसे घोषित करें, उनमें हेरफेर करें और उन्हें कैसे हटाएं।
ऐरे डेटा स्टोर हैं जिनका उपयोग उन मानों को रखने के लिए किया जाता है जिनका एक दूसरे से कुछ संबंध होता है। अधिकांश प्रोग्रामिंग भाषाओं के विपरीत, बैश ऐरे एक ही ऐरे में विभिन्न डेटा प्रकारों के मान संग्रहीत कर सकते हैं।
बैश में दो प्रकार के ऐरे होते हैं: अनुक्रमित ऐरे और एसोसिएटिव ऐरे। अनुक्रमित सरणियों के लिए, अनुक्रमणिका 0 से (n-1) तक शुरू होती है, जैसा कि अधिकांश भाषाओं में आम है। हालाँकि, बैश में सरणियाँ विरल हैं। इसका मतलब यह है कि आप (n-2)वें तत्व को निर्दिष्ट किए बिना (n-1)वें सरणी तत्व को निर्दिष्ट कर सकते हैं।
इस ट्यूटोरियल में, आप सीखेंगे कि बैश में ऐरे के साथ कैसे काम करें। आएँ शुरू करें।
सारणियों को परिभाषित करना
आप बैश में ऐरे को तीन तरीकों से परिभाषित कर सकते हैं। बैश वैरिएबल के समान, निर्माण के समय सरणियों को आरंभ करने की आवश्यकता होती है। इसका एकमात्र अपवाद यह है कि यदि आप इसका उपयोग कर रहे हैं घोषित कीवर्ड. आपको यह भी सुनिश्चित करना होगा कि जब आप सरणी प्रारंभ कर रहे हों तो असाइनमेंट ऑपरेटर के दोनों ओर कोई स्थान न बचा हो।
पहली विधि सरणी नाम के लिए मानों का मिश्रित असाइनमेंट है। इसे करने के दो तरीके हैं:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
पहले कंपाउंड असाइनमेंट में, राउंड ब्रैकेट में मान इंडेक्स से क्रमिक रूप से असाइन किए जाते हैं [0] को [3].
हालाँकि, दूसरे में, प्रोग्रामर द्वारा बताए गए किसी भी क्रम में मान एक सूचकांक को निर्दिष्ट किए जाते हैं।
संबंधित: लिनक्स में पर्यावरण चर क्या हैं? सब कुछ जो आपके लिए जानना ज़रूरी है
यदि आपने इस पर ध्यान दिया गिरफ्तार2, आप उस सूचकांक पर ध्यान देंगे [2] छोड़ दिया गया था. सरणी अभी भी बिना किसी त्रुटि के बनाई जाएगी। यह असाइनमेंट वास्तव में बैश सरणियों में विरल भंडारण का प्रदर्शन है जैसा कि हमने पहले बताया था।
ध्यान दें कि सरणी मानों को अलग करने वाले कोई अल्पविराम नहीं हैं। मानों को केवल रिक्त स्थान द्वारा अलग किया जाता है।
दूसरी विधि अप्रत्यक्ष रूप से सरणी घोषित करती है। आप बस शून्य सरणी तत्वों को मान निर्दिष्ट करना शुरू कर सकते हैं:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
तीसरा तरीका कीवर्ड के साथ ऐरे को स्पष्ट रूप से घोषित करना है घोषित:
declare -a arrayName
ऐरे पर संचालन
सरणी तत्वों तक पहुँचने के लिए, इस सिंटैक्स का उपयोग करें: ${सरणी[सूचकांक]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
यदि आपको इसके बजाय संपूर्ण सरणी का प्रिंट आउट लेने की आवश्यकता है, तो इसका उपयोग करें @ प्रतीक के रूप में
अनुक्रमणिका का ${सरणी[सूचकांक]}:
echo${fruits[@]}
सरणी में तत्वों की संख्या जानने के लिए, इसका उपयोग करें # प्रतीक जैसा कि नीचे दिखाया गया है:
echo ${#fruits[1]}
आपको सरणी तत्वों को संशोधित करने की भी आवश्यकता हो सकती है—ऐसा कैसे करें, इसके लिए नीचे दिया गया उदाहरण देखें। यह वैसा ही है जैसे आप कोई नया तत्व जोड़ते हैं। अंतर केवल इतना है कि आप एक मान को उस सूचकांक से बदल रहे हैं जिसमें पहले से ही एक मान है।
fruits[1]=pears
सहयोगी सारणियाँ
एक सरणी जिसकी कुंजियों के रूप में मनमाना मान होते हैं उसे साहचर्य सरणी कहा जाता है। इन सरणियों का उपयोग संबंधित कुंजी-मूल्य जोड़े को संग्रहीत करने के लिए किया जाता है।
संबंधित: AppleScript का उपयोग करके बैश स्क्रिप्ट को क्लिक करने योग्य ऐप्स में कैसे बदलें
एक सहयोगी सरणी को परिभाषित करने के लिए, आपको कीवर्ड का स्पष्ट रूप से उपयोग करने की आवश्यकता है घोषित.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
आप किसी सदस्य तत्व तक उसी तरह पहुंच सकते हैं जैसे आप अनुक्रमित सरणियों तक पहुंचते हैं:
echo${animal[lion]}
यदि आप सभी मानों का प्रिंट आउट लेना चाहते हैं, तो आप इसका उपयोग कर सकते हैं @ प्रतीक जैसा कि नीचे दिखाया गया है:
echo${animal[@]}
यदि आप सभी सरणी कुंजियों का प्रिंट आउट लेना चाहते हैं, तो आप इसका उपयोग कर सकते हैं @ और ! नीचे दिखाए अनुसार प्रतीक:
echo${!animal[@]}
एसोसिएटिव ऐरे में तत्वों की संख्या जानने के लिए, उसी सिंटैक्स का उपयोग करें जिसका उपयोग आप अनुक्रमित ऐरे के साथ करेंगे (अंतिम अनुभाग में प्रदर्शित)।
यदि आप किसी सरणी आइटम या संपूर्ण सरणी को हटाना चाहते हैं, तो नीचे दिए गए सिंटैक्स का उपयोग करें:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
प्रिंटफ कमांड का उपयोग करना
आपने देखा होगा कि यह पूरा लेख इसका उपयोग करता है गूंज शेल में डेटा आउटपुट करने का आदेश। गूंज कमांड इस ट्यूटोरियल के लिए काम करता है लेकिन जब स्ट्रिंग फ़ॉर्मेटिंग की बात आती है तो इसमें कुछ विशेषताएं और लचीलापन होता है।
हालांकि printf कमांड अधिक विशिष्ट स्वरूपण विकल्प प्रदान करता है जो बैश स्क्रिप्टिंग को आसान बनाता है। सीखना printf फ़ंक्शन निश्चित रूप से बैश में आपके स्ट्रिंग फ़ॉर्मेटिंग अनुभव और दक्षता को बढ़ाएगा।