बैश ऐरे के साथ डेटा में हेरफेर और नियंत्रण कैसे करें

Baisa Aire Ke Satha Deta Mem Heraphera Aura Niyantrana Kaise Karem



किसी भी प्रोग्रामिंग भाषा में एक इंडेक्स का उपयोग करके कई मानों को संग्रहीत करने के लिए एक ऐरे वेरिएबल का उपयोग किया जाता है। सरणी सूचकांक एक संख्या या स्ट्रिंग हो सकता है। जिस सरणी में संख्यात्मक सूचकांक होता है उसे 'संख्यात्मक सरणी' कहा जाता है और वह सरणी जिसमें सूचकांक के रूप में स्ट्रिंग मान होता है उसे 'सहयोगी सरणी' कहा जाता है। बैश में संख्यात्मक और साहचर्य दोनों सरणियाँ बनाई जा सकती हैं। इस ट्यूटोरियल में 15 उदाहरणों का उपयोग करके बैश ऐरे के डेटा में हेरफेर और नियंत्रण करने के तरीकों को विस्तार से दिखाया गया है।

सामग्री की सूची:

  1. सूचकांक द्वारा एक सारणी को परिभाषित करें
  2. एकाधिक मानों वाली एक सारणी को परिभाषित करें
  3. एक सहयोगी सरणी को परिभाषित करें
  4. सरणी मानों की गणना करें
  5. लूप द्वारा ऐरे मान पढ़ें
  6. सरणी के विशेष मान पढ़ें
  7. ऐरे मान सम्मिलित करें
  8. किसी फ़ाइल की सामग्री को ऐरे में पढ़ें
  9. सरणी मानों को संयोजित करें
  10. सरणी मानों को संशोधित करें
  11. ऐरे मान हटाएँ
  12. ऐरे मान खोजें और बदलें
  13. फ़ंक्शन तर्क के रूप में एक ऐरे का उपयोग करें
  14. फ़ंक्शन से ऐरे लौटाएँ
  15. ऐरे को खाली करें

सूचकांक द्वारा एक सारणी को परिभाषित करें

अनुक्रमिक या गैर-अनुक्रमिक संख्यात्मक सूचकांकों का उल्लेख करके किसी सरणी को घोषित करने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है। इस प्रकार की सारणी को संख्यात्मक सारणी कहा जाता है। यहां, '$books' सरणी तीन अनुक्रमिक अनुक्रमितों को परिभाषित करके बनाई गई है और '$products' सरणी चार गैर-अनुक्रमिक अनुक्रमितों को परिभाषित करके बनाई गई है। दोनों सरणियों के सभी मान 'प्रिंटफ' फ़ंक्शन का उपयोग करके मुद्रित किए जाते हैं।







#!/बिन/बैश

#सरणी अनुक्रमणिका को अनुक्रमिक क्रम में परिभाषित करें

पुस्तकें [ 0 ] = 'बैश शैल सीखना'

पुस्तकें [ 1 ] = 'बैश के साथ साइबर सुरक्षा ऑपरेशन'

पुस्तकें [ 2 ] = 'बैश कमांड लाइन प्रो टिप्स'

गूंज 'प्रथम सरणी के सभी मान:'

printf '%s\n' ' ${किताबें[@]} '

#सरणी अनुक्रमणिका को गैर-अनुक्रमिक क्रम में परिभाषित करें

उत्पादों [ 10 ] = 'कलम'

उत्पादों [ 5 ] = 'पेंसिल'

उत्पादों [ 9 ] = 'रूलर'

उत्पादों [ 4 ] = 'ए4 आकार का कागज'

गूंज

गूंज 'दूसरे सरणी के सभी मान:'

printf '%s\n' ' ${उत्पाद[@]} '

उत्पादन :



स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। दोनों सरणियों के मान आउटपुट में मुद्रित होते हैं। गैर-अनुक्रमिक अनुक्रमितों की सरणी के लिए मुद्रण के समय सूचकांक क्रम बनाए रखा जाता है:



  पी1





शीर्ष पर जाएँ

एकाधिक मानों वाली एक सारणी को परिभाषित करें

एकाधिक मानों के साथ एक संख्यात्मक सरणी को 'घोषणा' कमांड का उपयोग करके -ए विकल्प के साथ या 'घोषणा' कमांड का उपयोग किए बिना घोषित किया जा सकता है। निम्नलिखित स्क्रिप्ट में, पहली सरणी 'घोषणा' कमांड का उपयोग करके घोषित की जाती है और दूसरी सरणी 'घोषणा' कमांड का उपयोग किए बिना बनाई जाती है।



#!/बिन/बैश

#'घोषणा' कीवर्ड के साथ एक संख्यात्मक सरणी घोषित करें

घोषित -ए नाम = ( 'माइकल' 'डेविड' 'सिकंदर' 'थॉमस' 'रॉबर्ट' 'रिचर्ड' )

#सरणी मान प्रिंट करें

गूंज 'प्रथम सरणी के सभी मान:'

printf '%s\n' ' ${नाम[@]} '

#'घोषित' कीवर्ड के बिना एक संख्यात्मक सरणी घोषित करें

पुस्तकें = ( 'शैल स्क्रिप्टिंग ट्यूटोरियल' 'बिश बैश बोश!' 'जल्दी बैश सीखें' )

#नयी पंक्ति जोड़ें

गूंज

#सरणी मान प्रिंट करें

गूंज 'दूसरे सरणी के सभी मान:'

printf '%s\n' ' ${किताबें[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। दोनों सरणियों के मान यहां मुद्रित हैं:

  पी2

शीर्ष पर जाएँ

एक सहयोगी सरणी को परिभाषित करें

वह सारणी जिसमें अनुक्रमणिका के रूप में स्ट्रिंग मान होता है, साहचर्य सारणी कहलाती है। एसोसिएटिव बैश ऐरे बनाने के लिए बैश में 'डिक्लेयर' कमांड के साथ -ए विकल्प का उपयोग किया जाता है। निम्नलिखित स्क्रिप्ट में, पहले एसोसिएटिव ऐरे को इंडेक्स का अलग-अलग उल्लेख करके घोषित किया जाता है और दूसरे ऐरे को ऐरे घोषणा के समय सभी कुंजी-मूल्य जोड़े का उल्लेख करके घोषित किया जाता है।

#!/बिन/बैश

#मूल्य के बिना एक सहयोगी सरणी चर घोषित करें

घोषित -ए कर्मचारी

#सूचकांक को परिभाषित करके अलग से मान निर्दिष्ट करें

कर्मचारी [ 'पहचान' ] = '78564'

कर्मचारी [ 'नाम' ] = 'अभिनेता उपलब्ध हैं'

कर्मचारी [ 'डाक' ] = 'सीईओ'

कर्मचारी [ 'वेतन' ] = 300000

#सरणी के दो मान प्रिंट करें

गूंज 'कर्मचारी आयडी: ${कर्मचारी[आईडी]} '

गूंज 'कर्मचारी का नाम: ${कर्मचारी[नाम]} '

#मानों के साथ एक सहयोगी सरणी घोषित करें

घोषित -ए अवधि = ( [ कोड ] = 'सीएसई-206' [ नाम ] = 'ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग' [ क्रेडिट समय ] = 2.0 )

#नयी पंक्ति जोड़ें

गूंज

#दूसरे एरे के दो एरे मान प्रिंट करें

गूंज 'कोर्स का नाम: ${पाठ्यक्रम[नाम]} '

गूंज 'क्रेडिट समय: ${पाठ्यक्रम[क्रेडिट_घंटा]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। कुंजी या सूचकांक मान का उल्लेख करके सहयोगी सरणी के विशेष मान यहां मुद्रित किए गए हैं:

  पी 3

शीर्ष पर जाएँ

सरणी मानों की गणना करें

संख्यात्मक सरणी और साहचर्य सरणी के कुल तत्वों की गणना करने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है:

#!/बिन/बैश

#एक संख्यात्मक सरणी घोषित करें

घोषित -ए नाम = ( 'माइकल' 'डेविड' 'सिकंदर' 'थॉमस' 'रॉबर्ट' 'रिचर्ड' ) ;

गूंज 'संख्यात्मक सरणी की लंबाई है ${#नाम[@]} '

#एक सहयोगी सरणी घोषित करें

घोषित -ए अवधि = ( [ कोड ] = 'सीएसई-206' [ नाम ] = 'ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग' [ क्रेडिट समय ] = 2.0 )

गूंज 'सहयोगी सरणी की लंबाई है ${#कोर्स[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। संख्यात्मक और साहचर्य सरणियों की सरणी लंबाई यहां मुद्रित की गई है:

  पी4

शीर्ष पर जाएँ

लूप द्वारा ऐरे मान पढ़ें

'फॉर' लूप का उपयोग करके एक संख्यात्मक सरणी और एक सहयोगी सरणी के सभी मानों को पढ़ने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है:

#!/बिन/बैश

#एक संख्यात्मक सरणी घोषित करें

घोषित -ए पुस्तकें = ( 'शैल स्क्रिप्टिंग ट्यूटोरियल' 'बिश बैश बोश!' 'जल्दी बैश सीखें' )

#संख्यात्मक सरणी मान प्रिंट करें

गूंज 'संख्यात्मक सरणी मान हैं:'

के लिए में में ' ${किताबें[@]} '

करना

गूंज ' $में '

हो गया

गूंज

#मानों के साथ एक सहयोगी सरणी घोषित करें

घोषित -ए ग्राहकों = (

[ पहचान ] = 'एच-5623'

[ नाम ] = 'श्री। अहनाफ़'

[ पता ] = '6/ए, धनमंडी, ढाका।'

[ फ़ोन ] = '+8801975642312' )

#सहयोगी सरणी मान प्रिंट करें

गूंज 'साहचर्य सरणी मान हैं:'

के लिए में ' ${!ग्राहक[@]} '

करना

गूंज ' $क => ${ग्राहक[$k]} '

हो गया

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। यहां, संख्यात्मक सरणी के मान और सहयोगी सरणी के कुंजी-मूल्य जोड़े आउटपुट में मुद्रित होते हैं:

  पी 5

शीर्ष पर जाएँ

सरणी के मानों की विशेष श्रेणी पढ़ें

अनुक्रमणिका की विशेष श्रेणी के सरणी मान निम्नलिखित स्क्रिप्ट में दिखाए गए हैं। स्क्रिप्ट में, चार तत्वों की एक संख्यात्मक सरणी परिभाषित की गई है। सरणी के दूसरे सूचकांक से दो सरणी मान बाद में मुद्रित किए जाते हैं।

#!/बिन/बैश

#एक संख्यात्मक सरणी घोषित करें

घोषित -ए केक = ( 'चॉकलेट केक' 'वेनिला केक' 'लाल मखमली केक' 'स्ट्रॉबेरी केक' )

#विशेष सरणी मान प्रिंट करें

गूंज 'सरणी मानों के दूसरे और तीसरे तत्व हैं:'

printf '%s\n' ' ${केक[@]:1:2} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। सरणी के दूसरे और तीसरे मान 'वेनिला केक' और 'रेड वेलवेट केक' हैं जो आउटपुट में मुद्रित होते हैं:

  पी 6

शीर्ष पर जाएँ

ऐरे वैल्यूज़ डालें

सरणी के अंत में एकाधिक मान जोड़ने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है। मुख्य सरणी जो '$books' है उसमें तीन तत्व होते हैं और दो तत्व '$books' सरणी के अंत में जोड़े जाते हैं।

#!/बिन/बैश

#एक संख्यात्मक सरणी घोषित करें

घोषित -ए पुस्तकें = ( 'शैल स्क्रिप्टिंग ट्यूटोरियल' 'बिश बैश बोश!' 'जल्दी बैश सीखें' )

#प्रविष्ट करने से पहले सरणी मान प्रिंट करें

गूंज 'सरणी मान:'

printf '%s\n' ' ${किताबें[@]} '

गूंज

पुस्तकें = ( ' ${किताबें[@]} ' 'लिनक्स कमांड लाइन और शैल स्क्रिप्टिंग बाइबिल' 'मेंडल कूपर द्वारा उन्नत बैश स्क्रिप्टिंग गाइड' )

# डालने के बाद सरणी मान प्रिंट करें

गूंज 'दो मान डालने के बाद मान व्यवस्थित करें:'

printf '%s\n' ' ${किताबें[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। नए मान डालने से पहले और बाद में सरणी मान आउटपुट में मुद्रित होते हैं:

  पी7

शीर्ष पर जाएँ

फ़ाइल सामग्री को ऐरे में पढ़ें

इस उदाहरण की स्क्रिप्ट का परीक्षण करने के लिए निम्नलिखित सामग्री के साथ 'fruits.txt' नामक एक टेक्स्ट फ़ाइल बनाएं:

फल.txt

आम

कटहल

अनानास

नारंगी

केला

निम्नलिखित स्क्रिप्ट में, फ़ाइल की सामग्री को '$data' नामक सरणी में संग्रहीत किया जाता है। यहां, फ़ाइल की प्रत्येक पंक्ति को सरणी के प्रत्येक तत्व के रूप में संग्रहीत किया जाता है। इसके बाद, सरणी मान मुद्रित होते हैं।

#!/बिन/बैश

# उपयोगकर्ता से फ़ाइल नाम पढ़ें

पढ़ना -पी 'फ़ाइल नाम दर्ज करें:' फ़ाइल का नाम

अगर [ -एफ $फ़ाइलनाम ]

तब

#फ़ाइल सामग्री को एक सरणी में पढ़ें'

डेटा = ( ` बिल्ली ' $फ़ाइलनाम ' ` )

गूंज 'फ़ाइल की सामग्री नीचे दी गई है:'

#फ़ाइल को पंक्ति दर पंक्ति पढ़ें

के लिए रेखा में ' ${डेटा[@]} '

करना

गूंज $लाइन

हो गया

होना

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। 'कैट' कमांड द्वारा दिखाया गया आउटपुट और स्क्रिप्ट का आउटपुट समान है क्योंकि एक ही फ़ाइल को 'कैट' कमांड और स्क्रिप्ट द्वारा एक्सेस किया जाता है:

  पी8

शीर्ष पर जाएँ

सरणी मानों को संयोजित करें

एकाधिक सारणियों के मानों को मिलाकर एक नई सारणी बनाई जाती है। निम्नलिखित स्क्रिप्ट में, स्ट्रिंग के दो संख्यात्मक सरणियों को परिभाषित किया गया है। फिर, इन सारणियों के मानों को मिलाकर एक नई सारणी बनाई जाती है।

#!/बिन/बैश

#पहली सरणी घोषित करें

घोषित -ए नामसूची1 = ( 'माइकल' 'डेविड' 'सिकंदर' 'थॉमस' )

गूंज 'प्रथम सरणी मान हैं:'

printf '%एस, ' ${nameList1[@]}

गूंज

#दूसरी सारणी घोषित करें

घोषित -ए नामसूची2 = ( 'रॉबर्ट' 'रिचर्ड' )

गूंज 'दूसरी सरणी मान हैं:'

printf '%एस, ' ${nameList2[@]}

गूंज

#दो ऐरे को मिलाकर एक नया ऐरे बनाएं

संयुक्त_सरणी = ( ' ${nameList1[@]} ' ' ${nameList2[@]} ' )

गूंज 'संयुक्त सरणी मान हैं:'

printf '%एस, ' ${संयुक्त_सरणी[@]}

गूंज

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। यहां, आउटपुट में तीन सरणियों के मान मुद्रित होते हैं। तीसरी सरणी में पहली और दूसरी सरणी के सभी मान शामिल हैं:

  पी 9

शीर्ष पर जाएँ

सरणी मानों को संशोधित करें

सूचकांक का उल्लेख करके एक या अधिक सरणी मानों को अद्यतन करने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है:

#!/बिन/बैश

#पहली सरणी घोषित करें

घोषित -ए नाम सूची = ( 'माइकल' 'डेविड' 'सिकंदर' 'थॉमस' )

गूंज 'सरणी मान:'

printf '%एस, ' ${nameList[@]}

गूंज

#सरणी का दूसरा मान अद्यतन करें

नाम सूची [ 1 ] = 'रॉबर्ट'

गूंज 'अद्यतन के बाद सरणी मान:'

printf '%एस, ' ${nameList[@]}

गूंज

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। मुख्य सरणी और अद्यतन सरणी के मान आउटपुट में मुद्रित होते हैं:

  पी10

ऐरे मान हटाएँ

'अनसेट' कमांड का उपयोग किसी विशेष तत्व या सरणी के सभी तत्वों को हटाने के लिए किया जाता है। निम्नलिखित स्क्रिप्ट में, सरणी का दूसरा तत्व हटा दिया गया है।

#!/बिन/बैश

#एक संख्यात्मक सरणी घोषित करें

घोषित -ए पुस्तकें = ( 'शैल स्क्रिप्टिंग ट्यूटोरियल' 'बिश बैश बोश!' 'जल्दी बैश सीखें' )

#हटाने से पहले सरणी मान प्रिंट करें

गूंज 'सरणी मान:'

printf '%s\n' ' ${किताबें[@]} '

गूंज

#दूसरा तत्व हटाएं

अनसेट पुस्तकें [ 1 ]

#हटाने के बाद सरणी मान प्रिंट करें

गूंज 'दूसरा मान हटाने के बाद मान व्यवस्थित करें:'

printf '%s\n' ' ${किताबें[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। मुख्य सरणी के मान और एक मान को हटाने के बाद सरणी मान आउटपुट में मुद्रित होते हैं:

  पृष्ठ 11

शीर्ष पर जाएँ

ऐरे मान खोजें और बदलें

निम्नलिखित स्क्रिप्ट में, यदि पैटर्न में परिभाषित खोज मान '$names' सरणी के किसी भी मान से मेल खाता है, तो सरणी के विशेष मान को दूसरे मान से बदल दिया जाता है।

#!/बिन/बैश

#पहली सरणी घोषित करें

घोषित -ए नाम = ( 'माइकल' 'डेविड' 'सिकंदर' 'थॉमस' )

#मूल सरणी मान प्रिंट करें

गूंज 'मूल सरणी मान:'

printf '%s\n' ' ${नाम[@]} '

#सरणी मानों को बदलने के बाद स्ट्रिंग उत्पन्न करें

अद्यतन_सरणी = ${नाम[@]/अलेक्जेंडर/रिचर्ड}

#प्रतिस्थापन के बाद सरणी मान प्रिंट करें

गूंज 'प्रतिस्थापन के बाद मानों को व्यवस्थित करें:'

printf '%s\n' ' ${updated_array[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। किसी मान को बदलने के बाद मुख्य सरणी के मान और सरणी मान आउटपुट में मुद्रित होते हैं:

  पृष्ठ12

शीर्ष पर जाएँ

फ़ंक्शन तर्क के रूप में एक ऐरे का उपयोग करें

निम्नलिखित स्क्रिप्ट में, एक ऐरे वेरिएबल को फ़ंक्शन तर्क के रूप में पारित किया जाता है और उस ऐरे के मान बाद में मुद्रित किए जाते हैं।

#!/बिन/बैश

#संख्याओं की एक श्रृंखला घोषित करें

घोषित -ए नंबर = ( 10 6 चार पांच 13 8 )

#एक फ़ंक्शन को परिभाषित करें जो एक तर्क मान लेगा

समारोह ( )

{

#पहला तर्क पढ़ें

नंबर = $1

#सरणी मान प्रिंट करें

गूंज 'सरणी मान:'

printf '%d\n' ' ${नंबर[@]} '

}

#ऐरे के साथ फ़ंक्शन को तर्क के रूप में कॉल करें

समारोह ' ${नंबर[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  पृष्ठ13

शीर्ष पर जाएँ

फ़ंक्शन से एक ऐरे लौटाएँ

निम्नलिखित स्क्रिप्ट में, फ़ंक्शन को चार संख्यात्मक तर्कों के साथ कॉल किया जाता है। तर्क मानों के साथ एक सरणी बनाई जाती है और वह सरणी फ़ंक्शन से कॉलर को वापस कर दी जाती है।

#!/बिन/बैश

#एक फ़ंक्शन को परिभाषित करें जो चार तर्क मान पढ़ता है

समारोह ( )

{

#तर्क मान पढ़ें

नंबर = ( $1 $2 $3 $4 )

#सरणी लौटाएँ

गूंज ' ${नंबर[@]} '

}

#तीन तर्कों के साथ फ़ंक्शन को कॉल करें

वापसी_वैल =$ ( समारोह 78 चार पांच 90 23 )

#रिटर्न वैल्यू को एक ऐरे में स्टोर करें

पढ़ना -ए एक पर <<< $वापसी_वैल

#लौटे गए सरणी के मान प्रिंट करें

गूंज 'सरणी के मान हैं:'

के लिए में में ' ${num[@]} '

करना

गूंज ' $में '

हो गया

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

शीर्ष पर जाएँ

ऐरे को खाली करें

निम्नलिखित स्क्रिप्ट 'अनसेट' कमांड का उपयोग करके एक सरणी को खाली करने की विधि दिखाती है। सरणी मानों की कुल संख्या सरणी को खाली करने से पहले और बाद में मुद्रित की जाती है।

#!/बिन/बैश

#संख्याओं की एक श्रृंखला घोषित करें

घोषित -ए नंबर = ( 10 6 चार पांच 13 80 )

गूंज 'सरणी मानों की संख्या: ${#नंबर[@]} '

#सरणी को खाली बनाएं

अनसेट नंबर

गूंज 'सरणी खाली करने के बाद सरणी मानों की संख्या: ${#नंबर[@]} '

उत्पादन :

स्क्रिप्ट निष्पादित करने के बाद निम्न आउटपुट दिखाई देता है। सरणी को खाली करने के बाद सरणी के तत्वों की संख्या 0 हो गई:

  पृष्ठ 15

शीर्ष पर जाएँ

निष्कर्ष

बैश स्क्रिप्ट में ऐरे वेरिएबल्स को घोषित करने, एक्सेस करने, संशोधित करने और हटाने के विभिन्न तरीकों को इस ट्यूटोरियल में 15 सरल उदाहरणों का उपयोग करके दिखाया गया है। हमें उम्मीद है कि यह ट्यूटोरियल बैश उपयोगकर्ताओं को बैश ऐरे के उपयोग के बारे में विस्तार से जानने में मदद करेगा।