बाश (जो बोर्न अगेन शैल के लिए खड़ा है) एक लिपिंग भाषा है जो अधिकांश लिनक्स और यूनिक्स आधारित ऑपरेटिंग सिस्टम द्वारा उपयोग की जाती है।
आप एक टर्मिनल विंडो के भीतर बाश कमांड को एक के बाद चला सकते हैं या आप शेल स्क्रिप्ट बनाने के लिए कमांड को टेक्स्ट फाइल में जोड़ सकते हैं।
खोल स्क्रिप्ट लिखने के बारे में सबसे अच्छी बात यह है कि आप उन्हें बार-बार चला सकते हैं। उदाहरण के लिए कल्पना करें कि आपको किसी उपयोगकर्ता को सिस्टम में जोड़ने, उनकी अनुमतियां सेट करने और उनके प्रारंभिक वातावरण को प्रबंधित करने की आवश्यकता है। आप या तो पेपर के टुकड़े पर कमांड लिख सकते हैं और जैसे ही आप नए उपयोगकर्ता जोड़ते हैं उन्हें चला सकते हैं या आप एक स्क्रिप्ट लिख सकते हैं और बस उस स्क्रिप्ट में पैरामीटर पास कर सकते हैं।
बीएएसएच जैसी स्क्रिप्टिंग भाषाओं में अन्य भाषाओं के समान प्रोग्रामिंग संरचनाएं होती हैं। उदाहरण के लिए, आप कीबोर्ड से इनपुट प्राप्त करने के लिए आयात पैरामीटर का उपयोग कर सकते हैं और उन्हें चर के रूप में स्टोर कर सकते हैं। फिर आप इनपुट पैरामीटर के मान के आधार पर एक निश्चित कार्रवाई करने के लिए स्क्रिप्ट प्राप्त कर सकते हैं।
किसी भी प्रोग्रामिंग और स्क्रिप्टिंग भाषा का एक महत्वपूर्ण हिस्सा कोड के समान टुकड़े को बार-बार चलाने की क्षमता है।
कोड दोहराने के कई तरीके हैं (लूप के रूप में भी जाना जाता है)। इस गाइड में, आपको दिखाया जाएगा कि "for" लूप कैसे लिखना है।
ए के लिये लूप कोड के एक निश्चित खंड को बार-बार दोहराता है। वे उपयोगी हैं ताकि आदेशों की एक श्रृंखला तब तक चलती रहें जब तक कोई विशेष स्थिति पूरी नहीं हो जाती, जिसके बाद वे रुक जाएंगे।
इस मार्गदर्शिका में, आपको BASH स्क्रिप्ट के भीतर लूप का उपयोग करने के पांच तरीके दिखाए जाएंगे।
शुरू करने से पहले
लूप उदाहरणों के साथ शुरू करने से पहले, आपको टर्मिनल विंडो खोलने और इन चरणों का पालन करने की आवश्यकता है:
-
दर्ज mkdir स्क्रिप्ट्स (यहां mkdir के बारे में और जानें)।
-
दर्ज सीडी स्क्रिप्ट्स (यह निर्देशिका को बदल देता है स्क्रिप्ट ).
-
दर्ज नैनो examplen.sh (कहा पे n उदाहरण है कि आप काम कर रहे हैं)।
-
स्क्रिप्ट दर्ज करें।
-
दबाएँ Ctrl + हे बचाने के लिए और Ctrl + एक्स बाहर निकलने के लिए।
-
रन bash examplen.sh (फिर से, के साथ n उदाहरण के साथ आप काम कर रहे हैं)।
एक सूची के माध्यम से लूप कैसे करें
#! / bin / bashfor संख्या 1 2 3 4 5doecho $ numberdoneexit 0 में
"फॉर" लूप का उपयोग करने का बाश तरीका कुछ अन्य प्रोग्रामिंग और स्क्रिप्टिंग भाषाओं के लिए "लूप" को संभालने के तरीके से थोड़ा अलग है। आइए स्क्रिप्ट को तोड़ दें। एक लश में "लूप" के लिए, सभी के बीच बयान करना तथा किया हुआ सूची में प्रत्येक आइटम के लिए एक बार प्रदर्शन किया जाता है। उपरोक्त उदाहरण में, सूची सब कुछ है जो शब्द के बाद आता है में (यानी 1 2 3 4 5)। जब भी लूप पुनरावृत्त होता है, तो सूची में अगला मान शब्द के बाद निर्दिष्ट चर में डाला जाता है "के लिये" । उपरोक्त पाश में, चर कहा जाता है संख्या . गूंज कथन स्क्रीन पर जानकारी प्रदर्शित करने के लिए प्रयोग किया जाता है। इसलिए, यह उदाहरण संख्या 1 से 5 लेता है और उन्हें एक-एक करके स्क्रीन पर आउटपुट करता है: उपरोक्त उदाहरण के साथ समस्या यह है कि यदि आप एक बड़ी सूची (1 से 500 कहें) को संसाधित करना चाहते हैं, तो सभी संख्याओं को पहले स्थान पर टाइप करने में उम्र लगेगी। यह हमें दूसरे उदाहरण में लाता है जो दिखाता है कि कैसे एक प्रारंभ और अंत बिंदु निर्दिष्ट करना है: # 1. / bin / bashfor संख्या {1..10} doecho "$ number" doneexit 0 में
नियम मूल रूप से वही हैं। शब्द के बाद मूल्य " में " सूची को फिर से चालू करने के लिए सूची बनाएं और सूची में प्रत्येक मान चर (यानी संख्या) में रखा गया है, और प्रत्येक बार लूप पुनरावृत्त होता है, के बीच के विवरण करना तथा किया हुआ प्रदर्शन कर रहे हैं। मुख्य अंतर यह है कि जिस तरह से सूची बनाई गई है। घुंघराले ब्रैकेट {} मूल रूप से एक सीमा को दर्शाता है, और सीमा, इस मामले में, 1 से 10 है (दो बिंदु एक श्रेणी की शुरुआत और अंत को अलग करते हैं)। इसलिए, यह उदाहरण 1 और 10 के बीच प्रत्येक संख्या के माध्यम से चलता है और स्क्रीन को संख्या को निम्नानुसार आउटपुट करता है: पहले उदाहरण के समान वाक्यविन्यास के साथ, वही लूप इस तरह लिखा जा सकता था: 1 2 3 4 5 6 7 8 9 10 में संख्या के लिए पिछले उदाहरण से पता चला कि कैसे शुरुआत और अंत बिंदु के बीच लूप करना है, इसलिए अब हम देखेंगे कि सीमाओं में संख्याओं को कैसे छोड़ना है। कल्पना करें कि आप 0 और 100 के बीच लूप करना चाहते हैं लेकिन केवल दसवें नंबर दिखाएं। निम्नलिखित स्क्रिप्ट दिखाती है कि यह कैसे करें: # 0. / bin / bashfor संख्या {0..100..10} डचो "$ संख्या" didexit 0 में
नियम मूल रूप से वही हैं। एक सूची, एक चर, और बयानों का एक सेट के बीच प्रदर्शन किया जाना है करना तथा किया हुआ । इस बार सूची इस तरह दिखती है: {0..100..10}। पहला नंबर 0 है और अंत संख्या 100 है। तीसरी संख्या (10) सूची में आइटम्स की संख्या है जो इसे छोड़ देगी। उपर्युक्त उदाहरण, इसलिए, निम्न आउटपुट प्रदर्शित करता है: अन्य प्रोग्रामिंग भाषाओं की तुलना में लूप के लिए लिखने का बाश तरीका थोड़ा अजीब है। हालांकि, आप सी प्रोग्रामिंग भाषा के समान शैली में लूप के लिए लिख सकते हैं, जैसे: #! / bin / bashfor ((संख्या = 1; संख्या <100; संख्या ++)) {अगर (($ संख्या% 5 == 0)) तोecho "$ संख्या 5 से विभाजित है" fi} बाहर निकलें 0
लूप वैरिएबल नंबर को 1 पर सेट करके शुरू होता है (संख्या = 1 )। लूप फिर से जारी रहेगा जबकि एक संख्या का मूल्य 100 से कम है ( संख्या <100 )। का मूल्य संख्या प्रत्येक पुनरावृत्ति के बाद इसे 1 जोड़कर परिवर्तन ( संख्या ++ ). घुंघराले ब्रेसिज़ के बीच सब कुछ लूप के प्रत्येक पुनरावृत्ति के माध्यम से किया जाता है। ब्रेसिज़ के बीच बिट ए के मान की जांच करता है संख्या , इसे 5 तक विभाजित करता है, और शेष को 0 से तुलना करता है। यदि शेष 0 है तो संख्या 5 तक विभाजित है और फिर स्क्रीन पर प्रदर्शित होती है। उदाहरण के लिए: यदि आप पुनरावृत्ति के चरण आकार को बदलना चाहते हैं तो आप संख्या ++ अनुभाग में संशोधन कर सकते हैं संख्या = संख्या + 2 , संख्या = संख्या + 5 , या संख्या = संख्या + 10 आदि। इसे और भी कम किया जा सकता है संख्या + = 2 या संख्या + = 5 . लूप संख्याओं की पुनरावृत्ति सूचियों से अधिक कर सकते हैं। आप वास्तव में सूची के रूप में अन्य आदेशों के आउटपुट का उपयोग कर सकते हैं। निम्न उदाहरण दिखाता है कि ऑडियो फ़ाइलों को एमपी 3 से WAV में कैसे परिवर्तित करें: #! / Bin / bashफ़ाइल के लिए ./*.mp3dompg -w ./wavs/"${file}".wav "$ फ़ाइल" किया गया
इस उदाहरण में सूची प्रत्येक फ़ोल्डर है जिसमें वर्तमान फ़ोल्डर में .MP3 एक्सटेंशन है और चर एक है फ़ाइल . एमपीजी कमांड एमपी 3 फ़ाइल को डब्ल्यूएवी में परिवर्तित करता है। हालांकि, आपको शायद इसे अपने पैकेज मैनेजर का उपयोग करके इंस्टॉल करना होगा।
एक प्रारंभ और अंत बिंदु के बीच लूप कैसे करें
एक रेंज में नंबर कैसे छोड़ें
लूप के लिए एक और पारंपरिक खोज रहे हैं
एक व्यावहारिक उदाहरण




