के लिए कई फाइलों, रिकॉर्ड्स या अन्य मानों के लिए एक कार्य को दोहराने के लिए बैश स्क्रिप्ट लिखते समय लूप एक आसान उपकरण है।
के लिए कथन मानों की सूची पर पुनरावृति करेगा, सभी आइटम संसाधित होने तक प्रत्येक पर कार्य निष्पादित करेगा।
उपयोग के मामलों में निर्देशिका में फ़ाइलों पर लूपिंग, टेक्स्ट फ़ाइल में पंक्तियाँ, या डेटाबेस क्वेरी का आउटपुट शामिल है।
बैश फॉर लूप सिंटेक्स
for VARIABLE in LIST
do
COMMANDS
done कहां:
- VARIABLE वेरिएबल नाम है जिसे COMMANDS द्वारा संसाधित किए जाने पर LIST में प्रत्येक आइटम को असाइन किया जाएगा
- सूची कई रूप ले सकती है। उदाहरण के लिए नीचे देखें
लूप के लिए बैश के उदाहरण
के लिए लूप पूर्वनिर्धारित सूचियों या अन्य स्क्रिप्ट या कमांड-लाइन अनुप्रयोगों के आउटपुट से उत्पन्न सूचियों पर पुनरावृति कर सकते हैं।
एक के लिए . के साथ संख्याओं की श्रेणी में पुनरावृति लूप
{START…END} . का उपयोग करके श्रेणी में प्रत्येक संख्या को संसाधित करना (1 से बढ़ाना) :
for num in {0..10}
do
echo "I'm counting to 10 and I'm up to $num"
done ध्यान दें कि:
- सूची में प्रत्येक आइटम को चर नाम दिया गया है संख्या।
- इन्हें बाद में स्क्रिप्ट में $num. . का उपयोग करके एक्सेस किया जाता है
- संख्याओं की श्रेणियों में पुनरावृति केवल बैश संस्करण 3 और बाद के संस्करण में समर्थित है।
- पुनरावृत्त होने वाली संख्याएं घुंघराले ब्रेसिज़ की शुरुआत में संख्या के साथ शुरू होती हैं और 1 की वृद्धि में अंत में संख्या तक चलती हैं
कदम {START…END…INCREMENT} का उपयोग करके - संख्या से अधिक और 3 से बढ़ाना - ताकि 3 के गुणज ही संसाधित हों - :
for num in {0..15..3}
do
echo "$num is a multiple of 3!"
done ध्यान दें कि:
- घुंघराले ब्रेसिज़ के व्यंजक में एक तीसरा नंबर जोड़ा जाता है।
- यह 3 की वृद्धि में 0 से 15 तक की संख्या पर काम करेगा
- कस्टम इंक्रीमेंट के साथ श्रेणियों में पुनरावृत्ति करना केवल बैश संस्करण 4 और उसके बाद के संस्करण में समर्थित है।
एक के लिए . के साथ स्ट्रिंग्स की सूची पर पुनरावृति लूप
आप स्ट्रिंग मानों की सूची पर पुनरावृति भी कर सकते हैं:
for car in Ford, Holden, Honda, BMW, Ferrari
do
echo "I wish I could drive a $car"
done एक के लिए . के साथ एक सरणी पर पुनरावृति लूप
किसी सरणी को उसमें मानों पर पुनरावृति करने से पहले एक चर के रूप में घोषित किया जा सकता है:
FRUITS=('Apple' 'Pear' 'Orange' 'Strawberry')
for fruit in "${FRUITS[@]}"
do
echo "$fruit is delicious"
done फ़ाइलों पर पुनरावृति (और अन्य आउटपुट) एक के लिए . के साथ लूप
आप अन्य कमांड-लाइन कमांड के आउटपुट पर भी लूप कर सकते हैं:
for f in *
do
echo "Filename is $f"
done . के लिए ब्रेक
विराम स्टेटमेंट दिए गए बिंदु पर लूप से बाहर निकलेगा:
for num in {0..15..3}
do
echo "$num is a multiple of 3!"
if [[ "$num" == '9' ]]
then
break
fi
done
echo 'Finished counting at 9!' जारी रखें
जारी रखें स्टेटमेंट लूप के वर्तमान पुनरावृत्ति में कोड को निष्पादित करना बंद कर देगा (इसे पूरी तरह से छोड़कर) और जारी रखें अगले पुनरावृत्ति पर:
for num in {0..15..3}
do
if [[ "$num" == '6' ]]
then
continue
fi
echo "$num is a multiple of 3!"
done
echo 'The number 6 was skipped!' निष्कर्ष
स्क्रिप्ट लिखते समय लूप का उपयोग करने से आपका समय बचेगा और आपको लचीली स्क्रिप्ट लिखने की अनुमति मिलेगी जो मैन्युअल डेटा प्रविष्टि के बिना प्रसंस्करण फ़ाइलों और डेटा को स्वचालित कर सकती है।
अधिक बैश स्क्रिप्टिंग युक्तियों के लिए हमारे अन्य लेख देखें!