बैश में सशर्त तर्क में महारत कैसे हासिल करें

Baisa Mem Sasarta Tarka Mem Maharata Kaise Hasila Karem



सशर्त तर्क का उपयोग किसी भी प्रोग्रामिंग भाषा का एक बहुत ही आवश्यक हिस्सा है। प्रोग्रामिंग समस्याओं को हल करने के लिए सशर्त तर्क को बैश में विभिन्न तरीकों से लागू किया जा सकता है। स्ट्रिंग और संख्यात्मक मानों की तुलना करने, चर सामग्री की जाँच करने, फ़ाइल या निर्देशिका के अस्तित्व की जाँच करने आदि के लिए विभिन्न प्रकार के 'if' और 'case' कथनों के माध्यम से बैश में सशर्त तर्क का उपयोग करने की विधियाँ इस ट्यूटोरियल में दिखाई गई हैं। .

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

  1. 'यदि' कथन का उपयोग
  2. 'यदि-अन्यथा' कथन का उपयोग
  3. 'इफ़-एलिफ़-एल्स' कथन का उपयोग
  4. किसी खाली वेरिएबल की जांच करने के लिए 'यदि' कथन का उपयोग करें
  5. लॉजिकल ऑपरेटर के साथ 'यदि' कथन का उपयोग
  6. नेस्टेड 'यदि' कथनों का उपयोग
  7. फ़ाइल अस्तित्व की जाँच करने के लिए 'यदि' कथन का उपयोग करें
  8. निर्देशिका अस्तित्व की जाँच करने के लिए 'यदि' कथन का उपयोग
  9. रेगेक्स के साथ 'यदि' कथन का उपयोग
  10. 'केस' कथन का उपयोग

'यदि' कथन का उपयोग

यह उदाहरण बैश में 'if' स्टेटमेंट का सरल उपयोग दिखाता है। बैश में संख्यात्मक मानों की तुलना करने के लिए छह प्रकार के तुलना ऑपरेटरों का उपयोग किया जा सकता है। ये हैं '-eq' (बराबर), '-ne' (बराबर नहीं), '-le' (बराबर से कम), '-ge' (बराबर से बड़ा), '-lt' (इससे कम), और ' -gt” (इससे अधिक)। '-lt' और '-eq' का उपयोग निम्नलिखित स्क्रिप्ट में दिखाया गया है कि क्या संख्या 99 से कम है या '-lt' ऑपरेटर का उपयोग करके जाँच नहीं की गई है। संख्या सम या विषम है और इसकी जाँच '-eq' ऑपरेटर द्वारा की जाती है।







#!/बिन/बैश

#एक संख्यात्मक मान निर्दिष्ट करें

( ( संख्या = पचास ) )

#'if' कथन का उपयोग करके संख्यात्मक मान की जाँच करें

अगर [ $संख्या -एलटी 99 ]

तब

गूंज 'नंबर वैध है।'

होना

#जाँचें कि संख्या सम है या नहीं

अगर [ $ ( ( $संख्या % 2 ) ) -इक 0 ]

तब

गूंज 'संख्या सम है।'

होना

उत्पादन :



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



  पी1





शीर्ष पर जाएँ

'यदि-अन्यथा' कथन का उपयोग

'अगर-और' कथन का उपयोग निम्नलिखित स्क्रिप्ट में दिखाया गया है। उपयोगकर्ता से एक स्ट्रिंग मान लिया जाता है और 'if-else' कथन का उपयोग करके जाँचता है कि मान 'नीला' है या नहीं।



#!/बिन/बैश

# उपयोगकर्ता से एक स्ट्रिंग मान लें

पढ़ना -पी 'अपना पसंदीदा रंग दर्ज करें:' रंग

#'if-else' कथन का उपयोग करके स्ट्रिंग मान की जाँच करें

अगर [ ${रंग^^} == 'नीला' ]

तब

गूंज 'ठीक है, नीला रंग उपलब्ध है।'

अन्य

गूंज ' $रंग उपलब्ध नहीं है।'

होना

उत्पादन :

यदि 'लाल' को इनपुट के रूप में लिया जाता है तो पिछली स्क्रिप्ट को निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  पी2-1

यदि 'ब्लू' को इनपुट के रूप में लिया जाता है, तो पिछली स्क्रिप्ट को निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  पी2-2

शीर्ष पर जाएँ

'इफ़-एलिफ़-एल्स' कथन का उपयोग

'if-elif-else' कथन का उपयोग निम्नलिखित स्क्रिप्ट में दिखाया गया है। उपयोगकर्ता से एक नंबर लिया जाता है और अलग-अलग मानों के साथ जांच की जाती है जब तक कि कोई मिलान न मिल जाए। यदि कोई मिलान पाया जाता है, तो संबंधित संदेश मुद्रित किया जाता है। यदि कोई मिलान नहीं मिलता है, तो डिफ़ॉल्ट संदेश मुद्रित होता है।

#!/बिन/बैश

# उपयोगकर्ता से आईडी मान लें

पढ़ना -पी 'अपना क्रमांक यहां दर्ज करें:' धारावाहिक

#'if-elif-else' कथन का उपयोग करके इनपुट मान की जाँच करें

अगर [ $सीरियल == '4523' ]

तब

गूंज 'आपको ग्रुप ए में चुना गया है।'

एलिफ़ [ $सीरियल == '8723' ]

तब

गूंज 'आपको ग्रुप बी में चुना गया है।'

एलिफ़ [ $सीरियल == '3412' ]

तब

गूंज 'आपका चयन ग्रुप सी में हो गया है।'

अन्य

गूंज 'आपका चयन नहीं हुआ है' .

होना

आउटपुट:

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

  पी3-1

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

  पी3-2

शीर्ष पर जाएँ

किसी खाली वेरिएबल की जांच करने के लिए 'यदि' कथन का उपयोग करें

यह जांचने की विधि कि कोई वेरिएबल 'if' कथन का उपयोग करके खाली है या नहीं, निम्नलिखित स्क्रिप्ट में दिखाया गया है। इस कार्य को करने के लिए 'if' स्टेटमेंट में '-z' विकल्प का उपयोग किया जाता है।

#!/बिन/बैश

# उपयोगकर्ता से आईडी मान लें

पढ़ना -पी 'अपना क्रमांक यहां दर्ज करें:' धारावाहिक

#जांचें कि वेरिएबल खाली है या नहीं

अगर [ ! -साथ $सीरियल ]

तब

#'if-elif-else' कथन का उपयोग करके इनपुट मान की जाँच करें

अगर [ $सीरियल == '690' ]

तब

गूंज 'आपको टीम-1 में चुना गया है।'

एलिफ़ [ $सीरियल == '450' ]

तब

गूंज 'आपको टीम-2 में चुना गया है।'

अन्य

गूंज 'आपका चयन नहीं हुआ है' .

होना

अन्य

गूंज 'कोई सीरियल नंबर नहीं दिया गया है।'

होना

उत्पादन :

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

  पी4-1

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

  पी4-2

शीर्ष पर जाएँ

लॉजिकल ऑपरेटर्स के साथ 'यदि' कथन का उपयोग

बैश कंडीशनल स्टेटमेंट में तीन प्रकार के तार्किक ऑपरेटरों का उपयोग किया जा सकता है। ये तार्किक OR (||), तार्किक AND (&&), और तार्किक NOT (!) हैं। उपयोगकर्ता से एक कोड मान लिया जाता है. यदि इनपुट मान गैर-रिक्त है, तो मान को तार्किक OR का उपयोग करके दो कोड मानों से जांचा जाता है। यदि मान किसी कोड से मेल खाता है, तो संबंधित संदेश मुद्रित होता है। यदि कोई मिलान कोड नहीं मिलता है, तो डिफ़ॉल्ट संदेश मुद्रित होता है।

#!/बिन/बैश

# उपयोगकर्ता से पाठ्यक्रम कोड लें

पढ़ना -पी 'पाठ्यक्रम कोड दर्ज करें:' कोड

#जांचें कि वेरिएबल खाली है या नहीं

अगर [ ! -साथ $कोड ]

तब

#'if-elif-else' कथन का उपयोग करके इनपुट मान की जाँच करें

अगर [ [ $कोड == 'सीएसई-106' || $कोड == 'सीएसई-108' ] ]

तब

गूंज 'सीएसई पाठ्यक्रम।'

एलिफ़ [ [ $कोड == 'बीबीए-203' || $कोड == 'बीबीए-202' ] ]

तब

गूंज 'बीबीए कोर्स।'

अन्य

गूंज 'अमान्य पाठ्यक्रम कोड।'

होना

अन्य

गूंज 'कोई कोर्स कोड नहीं दिया गया है।'

होना

उत्पादन :

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

  पी5-1

'बीबीए-56' के इनपुट मान के साथ स्क्रिप्ट निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  p5-2

शीर्ष पर जाएँ

नेस्टेड 'यदि' कथनों का उपयोग

जब एक 'if' कंडीशन का उपयोग किसी अन्य 'if' कंडीशन के अंदर किया जाता है, तो इसे नेस्टेड 'if' स्टेटमेंट कहा जाता है। नेस्टेड 'if' का उपयोग करने की विधि निम्नलिखित स्क्रिप्ट में दिखाई गई है। उपयोगकर्ता से दो चिह्न मान लिए गए हैं. यदि इनपुट मान गैर-रिक्त हैं, तो पहली 'if' स्थिति जांचती है कि '$ सिद्धांत' का मान 60 से अधिक या उसके बराबर है या नहीं। यदि पहली 'if' स्थिति 'सही' लौटाती है, तो दूसरी 'if' स्थिति यह जाँचती है कि '$lab' का मान 50 से अधिक या उसके बराबर है या नहीं। यदि दूसरी 'यदि' स्थिति भी 'सही' लौटाती है, तो एक सफलता संदेश मुद्रित होता है। अन्यथा, एक विफलता संदेश मुद्रित होता है.

#!/बिन/बैश

#थ्योरी मार्क लीजिए

पढ़ना -पी 'सिद्धांत चिह्न दर्ज करें:' लिखित

#लैब मार्क ले लो

पढ़ना -पी 'प्रयोगशाला चिह्न दर्ज करें:' प्रयोगशाला

#जांचें कि वेरिएबल खाली हैं या नहीं

अगर [ [ ! -साथ $सिद्धांत && ! -साथ $लैब ] ]

तब

#नेस्टेड 'if' स्टेटमेंट का उपयोग करके इनपुट मानों की जाँच करें

अगर [ $सिद्धांत -गे 60 ]

तब

अगर [ $लैब -गे पचास ]

तब

गूंज 'तुम पास हो गए।'

अन्य

गूंज 'आप असफल हुए।'

होना

अन्य

गूंज 'आप असफल हुए।'

होना

अन्य

गूंज 'सिद्धांत या प्रयोगशाला चिह्न खाली है।'

होना

उत्पादन :

यदि दोनों या एक इनपुट मान खाली हैं तो निम्न आउटपुट दिखाई देता है:

  पी6-1

यदि 78 को सिद्धांत अंक के रूप में लिया जाता है और 45 को प्रयोगशाला अंक के रूप में लिया जाता है तो निम्नलिखित आउटपुट दिखाई देता है। यहां, दूसरी 'यदि' स्थिति 'गलत' लौटाती है:

  पी6-2

यदि 67 को सिद्धांत अंक के रूप में लिया जाता है और 56 को प्रयोगशाला अंक के रूप में लिया जाता है तो निम्नलिखित आउटपुट दिखाई देता है। यहां, दोनों 'यदि' स्थितियाँ 'सही' लौटती हैं:

  पी6-3

यदि 50 को सिद्धांत अंक के रूप में लिया जाता है और 80 को प्रयोगशाला अंक के रूप में लिया जाता है तो निम्नलिखित आउटपुट दिखाई देता है। यहां, पहली 'यदि' स्थिति 'गलत' लौटाती है:

  पी6-4

शीर्ष पर जाएँ

फ़ाइल अस्तित्व की जाँच करने के लिए 'यदि' कथन का उपयोग करें

फ़ाइल के अस्तित्व को बैश स्क्रिप्ट द्वारा दो तरीकों से जांचा जा सकता है। एक '[]' कोष्ठक के साथ '-f' ऑपरेटर का उपयोग कर रहा है। दूसरा 'परीक्षण' कमांड और '-एफ' ऑपरेटर का उपयोग कर रहा है। एक फ़ाइल नाम लिया जाता है और '-f' ऑपरेटर के साथ 'if' स्थिति का उपयोग करके फ़ाइल के अस्तित्व की जाँच की जाती है। फिर, एक और फ़ाइल नाम लिया जाता है और 'परीक्षण' कमांड और '-f' ऑपरेटर के साथ 'if' कथन का उपयोग करके फ़ाइल के अस्तित्व की जांच की जाती है।

#!/बिन/बैश

#फ़ाइलनाम लें

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

#'परीक्षण' का उपयोग किए बिना जांचें कि फ़ाइल मौजूद है या नहीं

अगर [ -एफ $fn1 ]

तब

गूंज ' $fn1 फ़ाइल मौजूद।'

अन्य

गूंज ' $fn1 फ़ाइल मौजूद नहीं है।'

होना

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

गूंज

#कोई अन्य फ़ाइल नाम लें

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

# `परीक्षण` का उपयोग करके जांचें कि फ़ाइल मौजूद है या नहीं

अगर परीक्षा -एफ $fn2 ; तब

गूंज ' $fn2 फ़ाइल मौजूद।'

# `परीक्षण` का उपयोग करके जांचें कि फ़ाइल खाली है या नहीं

अगर परीक्षा -साथ $fn2 ; तब

गूंज ' $fn2 फ़ाइल खाली है।'

अन्य

गूंज ' $fn2 फ़ाइल खाली नहीं है।'

होना

अन्य

गूंज ' $fn2 फ़ाइल मौजूद नहीं है।'

होना

उत्पादन :

फ़ाइल नाम के रूप में 'test.txt' और 'testing.txt' लेकर स्क्रिप्ट निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है। आउटपुट के अनुसार, दोनों फ़ाइलें वर्तमान स्थान पर मौजूद हैं और 'testing.txt' फ़ाइल खाली है:

  पी7-1

फ़ाइल नाम के रूप में 'f1.txt' और 'test.txt' लेकर स्क्रिप्ट निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है। आउटपुट के अनुसार, 'f1.txt' फ़ाइल वर्तमान स्थान पर मौजूद नहीं है और 'test.txt' फ़ाइल खाली नहीं है:

  पी7-2

शीर्ष पर जाएँ

निर्देशिका अस्तित्व की जाँच करने के लिए 'यदि' कथन का उपयोग

निर्देशिका के अस्तित्व को फ़ाइल की तरह बैश स्क्रिप्ट द्वारा दो तरीकों से जांचा जा सकता है। एक '[]' कोष्ठक के साथ '-d' ऑपरेटर का उपयोग कर रहा है। दूसरा 'परीक्षण' कमांड और '-डी' ऑपरेटर का उपयोग कर रहा है। एक निर्देशिका नाम लिया जाता है और '-d' ऑपरेटर के साथ 'if' स्थिति का उपयोग करके निर्देशिका के अस्तित्व की जाँच करता है। फिर, एक अन्य निर्देशिका नाम लिया जाता है और 'परीक्षण' कमांड और '-d' ऑपरेटर के साथ 'if' कथन का उपयोग करके फ़ाइल के अस्तित्व की जांच करता है।

#!/बिन/बैश

#निर्देशिका का नाम लें

पढ़ना -पी 'निर्देशिका का नाम दर्ज करें:' आप1

#'परीक्षण' का उपयोग किए बिना जांचें कि निर्देशिका मौजूद है या नहीं

अगर [ -डी $dir1 ]

तब

गूंज ' $dir1 निर्देशिका मौजूद है।'

अन्य

गूंज ' $dir1 निर्देशिका मौजूद नहीं है।'

होना

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

गूंज

#कोई अन्य निर्देशिका नाम लें

पढ़ना -पी 'अन्य निर्देशिका नाम दर्ज करें:' dir2

# `परीक्षण` का उपयोग करके जांचें कि फ़ाइल मौजूद है या नहीं

अगर परीक्षा -डी $dir2

तब

गूंज ' $dir2 निर्देशिका मौजूद है।'

अन्य

गूंज ' $dir2 निर्देशिका मौजूद नहीं है।'

होना

उत्पादन :

निम्न आउटपुट स्क्रिप्ट को 'temp' और 'files' निर्देशिका नामों के साथ निष्पादित करने के बाद दिखाई देता है। आउटपुट के अनुसार, दोनों निर्देशिकाएँ वर्तमान स्थान पर मौजूद हैं। फिर, निर्देशिकाओं की सामग्री की जांच करने के लिए 'ls' कमांड निष्पादित किया जाता है:

  पी8-1

स्क्रिप्ट को 'परीक्षण' और 'नए' निर्देशिका नामों के साथ निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है। आउटपुट के अनुसार, दोनों निर्देशिकाएँ वर्तमान स्थान पर मौजूद नहीं हैं। फिर, 'ls' कमांड का आउटपुट दिखाता है कि दोनों निर्देशिकाएँ मौजूद नहीं हैं:

  पृष्ठ8-2

शीर्ष पर जाएँ

रेगेक्स के साथ 'यदि' कथन का उपयोग

निम्नलिखित स्क्रिप्ट रेगेक्स के साथ 'if' स्टेटमेंट का उपयोग करके इनपुट डेटा को मान्य करने की विधि दिखाती है। यहां, उपयोगकर्ता से दो इनपुट मान लिए गए हैं और उन्हें '$bookname' और '$bookprice' वेरिएबल्स में संग्रहीत किया गया है। स्क्रिप्ट में 'if' कंडीशन का उपयोग यह जांचने के लिए किया जाता है कि '$bookname' वेरिएबल में सभी वर्णमाला वर्ण हैं और '$bookprice' में एक संख्या है।

#!/बिन/बैश

# उपयोगकर्ता से पुस्तक का नाम और कीमत लें

गूंज -एन 'पुस्तक का नाम दर्ज करें:'

पढ़ना किताब का नाम

गूंज -एन 'पुस्तक का मूल्य दर्ज करें:'

पढ़ना किताब की कीमत

#जाँचें कि पुस्तक के नाम में केवल वर्णमाला है

अगर ! [ [ ' $किताबनाम ' =~ [ ए-ज़ा-ज़ ] ] ] ; तब

गूंज 'पुस्तक का नाम अमान्य है।'

अन्य

गूंज 'पुस्तक का नाम मान्य है।'

होना

#जांचें कि किताब की कीमत में केवल अंक शामिल हैं

अगर ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; तब

गूंज 'पुस्तक मूल्य में केवल अंक शामिल हो सकते हैं।'

अन्य

गूंज 'पुस्तक का मूल्य मान्य है।'

होना

उत्पादन :

पुस्तक के नाम के रूप में 'बैश प्रोग्रामिंग' के इनपुट मान और पुस्तक की कीमत के रूप में 78 के साथ स्क्रिप्ट को निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  पी9-1

पुस्तक के नाम के रूप में 90 के इनपुट मान और पुस्तक मूल्य के रूप में 'बैश' के साथ स्क्रिप्ट को निष्पादित करने के बाद निम्नलिखित आउटपुट दिखाई देता है:

  p9-2

शीर्ष पर जाएँ

'केस' कथन का उपयोग

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

#!/बिन/बैश

#वर्तमान माह का मान संख्या में लें

पढ़ना -पी 'आज का महीना संख्या में दर्ज करें:' b_माह

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

गूंज -एन 'वर्तमान माह का नाम है'

#इनपुट के आधार पर मिलान वाले महीने का नाम ढूंढें और प्रिंट करें

मामला $b_महीना में

1 | 01 ) गूंज 'जनवरी।' ;;

2 | 02 ) गूंज 'फ़रवरी।' ;;

3 | 03 ) गूंज 'मार्च।' ;;

4 | 04 ) गूंज 'अप्रैल।' ;;

5 | 05 ) गूंज 'मई।' ;;

6 | 06 ) गूंज 'जून।' ;;

7 | 07 ) गूंज 'जुलाई।' ;;

8 | 08 ) गूंज 'अगस्त।' ;;

9 | 09 ) गूंज 'सितम्बर।' ;;

10 ) गूंज 'अक्टूबर।' ;;

ग्यारह ) गूंज 'नवंबर।' ;;

12 ) गूंज 'दिसंबर।' ;;

* ) गूंज 'नहीं मिला।' ;;

esac

उत्पादन :

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

  पृष्ठ10-1

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


  पृष्ठ10-2

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

  p10-3

शीर्ष पर जाएँ

निष्कर्ष

'यदि' और 'केस' कथनों का उपयोग करके सशर्त तर्क के विभिन्न उपयोग इस ट्यूटोरियल के 10 उदाहरणों में दिखाए गए हैं। इस ट्यूटोरियल को पढ़ने के बाद नए बैश उपयोगकर्ताओं के लिए बैश में सशर्त तर्क का उपयोग करने की अवधारणा स्पष्ट हो जाएगी।