एंड्रॉयड

पाश के लिए बैश

Linux Tutorial for Beginners: Introduction to Linux Operating System

Linux Tutorial for Beginners: Introduction to Linux Operating System

विषयसूची:

Anonim

लूप प्रोग्रामिंग भाषाओं की मूलभूत अवधारणाओं में से एक है। जब आप किसी निश्चित स्थिति तक पहुँचने के लिए बार-बार आदेशों की श्रृंखला चलाना चाहते हैं, तो लूप आसान होते हैं।

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

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

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

लूप के लिए मानक बैश

लूप के लिए मदों की एक सूची से अधिक पुनरावृत्त होता है और दिए गए सेटों को निष्पादित करता है।

लूप के लिए बैश निम्न रूप लेता है:

for item in do done

सूची रिक्त स्थान द्वारा अलग किए गए तारों की संख्या, संख्याओं की एक श्रृंखला, एक कमांड का उत्पादन, एक सरणी, और इसी तरह हो सकती है।

तार पर लूप

लूप के नीचे के उदाहरण में तार की सूची में प्रत्येक आइटम पर पुनरावृति होगी, और चर element वर्तमान आइटम पर सेट किया जाएगा।

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

लूप निम्नलिखित उत्पादन का उत्पादन करेगा:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

एक नंबर रेंज पर लूप

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

{START..END}

लूप के नीचे के उदाहरण में 0 से 3 तक सभी नंबरों के माध्यम से पुनरावृति होगी।

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

बैश 4 से शुरू होकर, रेंज का उपयोग करते समय वेतन वृद्धि को निर्दिष्ट करना भी संभव है। अभिव्यक्ति निम्नलिखित रूप लेती है:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

सरणी तत्वों पर लूप करें

आप तत्वों के एक सरणी पर पुनरावृति करने के लिए लूप के लिए भी उपयोग कर सकते हैं:

नीचे दिए गए उदाहरण में, हम एक सरणी BOOKS को परिभाषित कर रहे हैं और सरणी के प्रत्येक तत्व पर पुनरावृत्ति कर रहे हैं।

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

लूप के लिए सी-स्टाइल बैश

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

for ((INITIALIZATION; TEST; STEP)) do done

जब लूप शुरू होता है तो केवल एक बार INITIALIZATION भाग को निष्पादित किया जाता है। फिर, TEST भाग का मूल्यांकन किया जाता है। यदि यह गलत है तो लूप समाप्त हो जाता है। यदि TEST सत्य है, तो लूप के लिए निकाय के अंदर आदेश निष्पादित किए जाते हैं और STEP भाग अपडेट किया जाता है।

निम्नलिखित कोड में, i = 0 को प्रारंभ करके लूप तारे, फिर प्रत्येक पुनरावृत्ति से पहले अगर i ≤ 10 i ≤ 10 जांच करता i ≤ 10 । यदि यह सही है तो i और i के वर्तमान मान को 1 ( i++ ) से प्रिंट करता है अन्यथा लूप समाप्त हो जाता है।

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

लूप 1001 बार पुनरावृति करेगा और निम्नलिखित उत्पादन करेगा:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

विवरणों को तोड़ें और जारी रखें

लूप निष्पादन के लिए नियंत्रण के लिए ब्रेक और जारी बयान का उपयोग किया जा सकता है।

ब्रेक स्टेटमेंट

विराम कथन वर्तमान लूप को समाप्त करता है और समाप्त किए गए कथन का अनुसरण करता है। यह आमतौर पर लूप को समाप्त करने के लिए उपयोग किया जाता है जब एक निश्चित स्थिति पूरी होती है।

निम्नलिखित उदाहरण में, यदि वर्तमान पुनरावृत्त आइटम 'लिथियम' के बराबर है, तो हम लूप के निष्पादन को समाप्त करने के लिए यदि कथन का उपयोग कर रहे हैं।

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

जारी बयान

जारी बयान लूप की वर्तमान पुनरावृत्ति से बाहर निकलता है और लूप के अगले पुनरावृत्ति को प्रोग्राम नियंत्रण पास करता है।

निम्नलिखित उदाहरण में, हम संख्याओं की एक श्रेणी के माध्यम से पुनरावृत्ति कर रहे हैं और जब वर्तमान पुनरावृत्त आइटम '2' के बराबर होता है, तो जारी बयान लूप की शुरुआत में लौटने और अगले पुनरावृत्ति के साथ जारी रखने के लिए निष्पादन का कारण होगा।

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

बैश फॉर लूप उदाहरण

फ़ाइल नाम में रिक्त स्थान के साथ फ़ाइलों का नाम बदलना

निम्न उदाहरण दिखाता है कि कैसे अंडरस्कोर में स्थान को बदलकर अपने नाम में एक स्थान के साथ वर्तमान निर्देशिका में सभी फ़ाइलों का नाम बदलने के लिए बैश का उपयोग लूप के लिए किया जाता है।

for file in *\ *; do mv "$file" "${file// /_}" done

चलो कोड लाइन को लाइन से तोड़ते हैं:

  • पहली पंक्ति लूप के लिए बनाता है और इसके नाम की एक जगह के साथ सभी फाइलों की सूची के माध्यम से पुनरावृति करता है। अभिव्यक्ति *\ * सूची बनाता है। दूसरी पंक्ति सूची के प्रत्येक आइटम पर लागू होती है और फ़ाइल को एक अंडरस्कोर ( _ ) के साथ अंतरिक्ष को बदलने वाले नए पर ले जाती है। भाग ${file// /_} स्ट्रिंग के साथ एक पैरामीटर के भीतर एक पैटर्न को बदलने के लिए शेल पैरामीटर विस्तार का उपयोग कर रहा है। done पाश खंड के अंत का संकेत है।

फ़ाइल एक्सटेंशन बदलना

निम्न उदाहरण दिखाता है कि कैसे.jpeg से फ़ाइल एक्सटेंशन को.jpg से.jpg में बदलकर.jpeg के साथ समाप्त होने वाली सभी फाइलों का नाम बदलने के लिए बैश का उपयोग लूप के लिए किया जाता है।

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

चलो लाइन द्वारा कोड लाइन का विश्लेषण करते हैं:

  • पहली पंक्ति लूप के लिए बनाता है और '.jpeg' के साथ समाप्त होने वाली सभी फ़ाइलों की सूची के माध्यम से पुनरावृति करता है। दूसरी पंक्ति सूची के प्रत्येक आइटम पर लागू होती है और फ़ाइल को '.jpg' के साथ '.jpeg' के स्थान पर एक नए स्थान पर ले जाती है। । ${file%.jpeg} शेल पैरामीटर विस्तार का उपयोग करके फ़ाइल नाम से '.jpeg' भाग को हटाने के लिए लूप खंड के अंत को इंगित करता है।

निष्कर्ष

अब तक आपको इस बात की अच्छी समझ होनी चाहिए कि सूचियों के माध्यम से लूप के लिए बैश का उपयोग कैसे किया जाए।

बैश लूप टर्मिनल