शेल स्क्रिप्ट में बैश फॉर लूप का उपयोग करना सीखें


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

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

बैश स्क्रिप्टिंग में, 3 प्रकार के लूप होते हैं: लूप के लिए, लूप के दौरान और लूप तक। तीनों का उपयोग मूल्यों की एक सूची पर पुनरावृति करने और दिए गए आदेशों के सेट को करने के लिए किया जाता है।

इस गाइड में, हम लिनक्स में बैश फॉर लूप पर ध्यान केंद्रित करेंगे।

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

लूप के लिए निम्नलिखित सिंटैक्स लेता है:

for variable_name in value1 value2 value3  .. n
do
    command1
    command2
    commandn
done

आइए अब बैश फॉर लूप के कुछ उदाहरण उपयोगों की जांच करें।

बैश सिंपल फॉर लूप

अपने सरलतम रूप में, For लूप निम्न मूल स्वरूप लेता है। इस उदाहरण में, वेरिएबल n घुंघराले ब्रेसिज़ में संलग्न संख्यात्मक मानों के एक समूह पर पुनरावृति करता है और उनके मानों को स्टडआउट करने के लिए प्रिंट करता है।

for n in {1 2 3 4 5 6 7};
do
   echo $n
done

रेंज के साथ बैश फॉर लूप

पिछले उदाहरणों में, हमने स्पष्ट रूप से for लूप द्वारा पुनरावृत्त किए जाने वाले मानों को सूचीबद्ध किया है, जो ठीक काम करता है। हालाँकि, आप केवल कल्पना कर सकते हैं कि यह कितना बोझिल और समय लेने वाला कार्य होगा, उदाहरण के लिए, सौ मान। यह आपको 1 से 100 तक के सभी मान टाइप करने के लिए बाध्य करेगा।

इस समस्या को हल करने के लिए, एक श्रेणी निर्दिष्ट करें। ऐसा करने के लिए, प्रारंभ करने के लिए संख्या निर्दिष्ट करें और दो अवधियों से अलग करना बंद करें।

इस उदाहरण में, 1 पहला मान है जबकि 7 श्रेणी में अंतिम मान है।

#!/bin/bash

for n in {1..7};
do
   echo $n
done

एक बार शेल स्क्रिप्ट निष्पादित हो जाने के बाद, श्रेणी में सभी मान सूचीबद्ध होते हैं, जैसा कि हमारे पास साधारण लूप में था।

इसके अतिरिक्त, हम उस श्रेणी के अंत में एक मान शामिल कर सकते हैं जो लूप को वृद्धिशील चरणों में मानों के माध्यम से पुनरावृत्त करने जा रहा है।

निम्न बैश स्क्रिप्ट पहले मान से शुरू होने वाले मानों के बीच 2 वृद्धिशील चरणों के साथ 1 और 7 के बीच के मानों को प्रिंट करती है।

#!/bin/bash

for n in {1..7..2};
do
   echo $n
done

उपरोक्त उदाहरण से, आप देख सकते हैं कि लूप ने कर्ली ब्रेसिज़ के अंदर मानों को 2 मानों से बढ़ा दिया है।

सारणियों के साथ लूप्स के लिए बैश करें

आप फॉर लूप का उपयोग करके सरणी में परिभाषित मानों के माध्यम से भी आसानी से पुनरावृति कर सकते हैं। निम्नलिखित उदाहरण में, लूप के लिए फल सरणी के अंदर सभी मानों के माध्यम से पुनरावृत्ति करता है और उन्हें स्टडआउट पर प्रिंट करता है।

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[@]}; 
do
    echo $n
done

@ ऑपरेटर सभी तत्वों तक पहुंचता है या उन्हें लक्षित करता है। इससे एक-एक करके सभी तत्वों पर पुनरावृति संभव हो जाती है।

इसके अलावा, आप सरणी के भीतर इसकी स्थिति निर्दिष्ट करके एकल तत्व तक पहुंच सकते हैं।

उदाहरण के लिए मैंगो तत्व तक पहुँचने के लिए, @ ऑपरेटर को ऐरे में तत्व की स्थिति से बदलें (पहला तत्व 0 से शुरू होता है, इसलिए इस मामले में, मैंगो द्वारा निरूपित किया जाएगा 2).

यह लूप के लिए कैसा दिखता है।

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[2]}; 
do
    echo $n
done

बैश सी-स्टाइल फॉर लूप्स

आप तत्वों की एक श्रृंखला पर पुनरावृति करने के लिए लूप के अंदर चर का उपयोग कर सकते हैं। यह वह जगह है जहां लूप के लिए सी-स्टाइल आता है। निम्न उदाहरण लूप के लिए सी-स्टाइल दिखाता है जो 1 से 7 तक संख्यात्मक मानों की सूची को प्रिंट करता है।

#!/bin/bash

n=7
for (( n=1 ; n<=$n ; n++ )); 
do
    echo $n
done

सशर्त बयानों के साथ लूप्स के लिए बैश सी-स्टाइल

आप लूप के लिए सी-स्टाइल के अंदर सशर्त बयान शामिल कर सकते हैं। निम्नलिखित उदाहरण में, हमने एक if-else स्टेटमेंट शामिल किया है जो 1 और 7 के बीच सम और विषम संख्याओं की जाँच करता है और प्रिंट करता है।

#!/bin/bash

for (( n=1; n<=7; n++ ))
do  
    # Check if the number is even or not
    if (( $n%2==0 ))
    then
        echo "$n is even"
    else
        echo "$n is odd"
    fi  
done

बैश फॉर लूप के साथ 'जारी रखें' कथन का प्रयोग करें

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

जारी बयान एक विशिष्ट स्थिति पूरी होने पर लूप के अंदर वर्तमान पुनरावृत्ति को रोकता है, और फिर पुनरावृत्ति को फिर से शुरू करता है।

नीचे दिखाए गए लूप के लिए विचार करें।

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
              echo "Target $n has been reached"
              continue
        fi
        echo $n
done

कोड यही करता है:

  • लाइन 2: लूप के लिए शुरुआत को चिह्नित करता है और वेरिएबल n को 1 से 10 तक पुनरावृत्त करता है।
  • पंक्ति 4: n के मान की जाँच करता है और यदि चर 6 के बराबर है, तो स्क्रिप्ट स्टडआउट के लिए एक संदेश प्रतिध्वनित करती है और पंक्ति 2 में अगले पुनरावृत्ति पर लूप को फिर से शुरू करती है।
  • पंक्ति 9: पंक्ति 4 में स्थिति गलत होने पर ही मानों को स्क्रीन पर प्रिंट करता है।

स्क्रिप्ट चलाने के बाद अपेक्षित आउटपुट निम्न है।

बैश फॉर लूप के साथ 'ब्रेक' कथन का प्रयोग करें

'ब्रेक' स्टेटमेंट, जैसा कि नाम से पता चलता है, एक शर्त पूरी होने पर पुनरावृत्ति को रोकता या समाप्त करता है।

नीचे फॉर लूप पर विचार करें।

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
                echo "Target $n has been reached"
                break
        fi
        echo $n
done
echo "All done"

कोड यही करता है:

  • लाइन 2: लूप के लिए शुरुआत को चिह्नित करता है और वेरिएबल n को 1 से 10 तक पुनरावृत्त करता है।
  • पंक्ति 4: n के मान की जाँच करता है और यदि चर 6 के बराबर है, तो स्क्रिप्ट स्टडआउट के लिए एक संदेश प्रतिध्वनित करता है और पुनरावृत्ति को रोकता है।
  • पंक्ति 9: संख्या को स्क्रीन पर केवल तभी प्रिंट करता है जब पंक्ति 4 में स्थिति गलत होती है।

आउटपुट से, आप देख सकते हैं कि चर लूप की स्थिति को पूरा करने के बाद लूप बंद हो जाता है।

यह बैश फॉर लूप्स के बारे में एक ट्यूटोरियल था। हम आशा करते हैं कि आपको यह जानकारीपूर्ण लगी होगी। बेझिझक अपनी प्रतिक्रिया दें।