DevOps बूटकैंप · पाठ

त्रुटि प्रबंधन और निकास स्थिति

निकास स्थितियों को समझकर और 'set -e' तथा सशर्त तर्क का उपयोग करके अपनी स्क्रिप्ट में मज़बूत त्रुटि जाँच लागू करें।

पाठ 2, कुल 4 में से11 चरण

त्रुटि प्रबंधन और निकास स्थिति, CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

त्रुटि प्रबंधन में आपका स्वागत है

इस पाठ में, हम त्रुटियों को प्रभावी ढंग से संभालना सीखकर आपकी Bash स्क्रिप्ट को अधिक मजबूत बनाएँगे।

ऐसी स्क्रिप्ट की कल्पना कीजिए जो कई चरण पूरे करती है। यदि कोई एक चरण विफल हो जाए, तो आप चाहेंगे कि आपकी स्क्रिप्ट रुक जाए या कम से कम आपको विफलता का पता चल जाए, है न? यहीं त्रुटि प्रबंधन काम आता है!

निकास स्थिति क्या होती है

Linux शेल में चलाया गया प्रत्येक आदेश एक निकास स्थिति लौटाता है (जिसे कभी-कभी निकास कोड या वापसी कोड भी कहा जाता है)।

  • 0 स्थिति का अर्थ है कि आदेश सफलतापूर्वक पूरा हुआ।
  • शून्येतर स्थिति (जैसे 1, 2, 127) किसी प्रकार की विफलता या त्रुटि को दर्शाती है।

यह आपके आदेशों के लिए ट्रैफ़िक लाइट जैसा है!

निकास स्थिति की मैन्युअल जाँच

आप विशेष चर $? का उपयोग करके अंतिम निष्पादित आदेश की निकास स्थिति जाँच सकते हैं।

आइए एक सफल और एक विफल आदेश आज़माएँ:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

मूलभूत सशर्त त्रुटि जाँच

निकास स्थिति की जानकारी होने पर आपकी स्क्रिप्ट निर्णय ले सकती है। आप if कथन से $? की जाँच करके त्रुटियों पर प्रतिक्रिया दे सकते हैं।

इससे आपकी स्क्रिप्ट समस्याओं से अवगत रहती है और अमान्य डेटा के साथ आगे बढ़ने से बचती है।

#!/bin/bash

ls non_existent_file.txt

if [ $? -ne 0 ]; then
  echo "Error: The 'ls' command failed!"
  exit 1 # Exit script with an error code
fi

echo "This line will not run if 'ls' fails."

`set -e` की शक्ति

हर आदेश के बाद मैन्युअल रूप से $? की जाँच करना थकाऊ हो सकता है। यहीं set -e उपयोगी होता है!

जब आप स्क्रिप्ट को set -e के साथ शुरू करते हैं, तो Bash तुरंत बाहर निकल जाता है यदि कोई भी आदेश (जो किसी सशर्त जाँच का भाग न हो) शून्येतर स्थिति के साथ समाप्त होता है।

यह आपकी स्क्रिप्ट के लिए एक वैश्विक सुरक्षा स्विच जैसा है!

`set -e` का कार्य करते हुए प्रदर्शन

आइए देखें कि set -e त्रुटि के बाद स्क्रिप्ट को आगे बढ़ने से कैसे रोकता है। ध्यान दें कि अंतिम echo आदेश तक कभी पहुँचा ही नहीं जाता।

#!/bin/bash
set -e

echo "Starting important tasks..."

# This command will fail
cp /non_existent_source /tmp/destination

echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."

`set -e` कब नहीं रोकता

set -e शक्तिशाली है, लेकिन इसके कुछ विशिष्ट नियम हैं। यदि विफल आदेश इनमें से कोई हो, तो यह स्क्रिप्ट को बाहर नहीं कराएगा:

  • किसी if या while शर्त का भाग।
  • किसी && या || सूची का भाग (अंतिम आदेश को छोड़कर)।
  • ! से पहले आया हुआ।

इन संदर्भों को सफलता या विफलता जाँचने के लिए बनाया गया है, इसलिए `set -e` इनमें हस्तक्षेप नहीं करता।

`set -e` को `||` के साथ संयोजित करना

कभी-कभी आप बाहर निकलने से पहले अपनी कस्टम त्रुटि-संदेश दिखाना चाहते हैं। आप set -e को || (OR) ऑपरेटर के साथ संयोजित कर सकते हैं।

command || { echo "Error message"; exit 1; }

यदि command विफल होता है, तो || के बाद वाला भाग निष्पादित होता है, आपका संदेश प्रिंट करता है और फिर एक विशिष्ट त्रुटि कोड के साथ बाहर निकलता है।

#!/bin/bash
set -e

echo "Attempting to find a file..."

find /non_existent_dir -name "*.txt" || \
  { echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }

echo "Script continued (this won't print if 'find' fails)."

विशिष्ट निकास कोड संभालना

जहाँ 0 सफलता और शून्येतर मान विफलता दर्शाते हैं, वहीं विशिष्ट शून्येतर कोड के अलग-अलग अर्थ हो सकते हैं।

  • 1: सामान्य त्रुटि।
  • 2: शेल के अंतर्निर्मित आदेशों का गलत उपयोग।
  • 127: आदेश नहीं मिला।

विशिष्ट विफलता प्रकारों की जाँच करने के लिए आप if [ $? -eq 127 ] का उपयोग कर सकते हैं, जिससे अधिक उपयुक्त त्रुटि जानकारी दी जा सकती है।

त्रुटि प्रबंधन प्रश्नोत्तरी

Bash की निकास स्थितियों और त्रुटि प्रबंधन के बारे में निम्नलिखित में से कौन-सा कथन TRUE है?

पुनरावलोकन: मजबूत स्क्रिप्ट

आपने अपनी Bash स्क्रिप्ट को कहीं अधिक विश्वसनीय बनाना सीख लिया है!

  • प्रत्येक आदेश एक निकास स्थिति लौटाता है (सफलता के लिए 0, विफलता के लिए शून्येतर)।
  • $? चर आपको अंतिम आदेश की निकास स्थिति देता है।
  • set -e एक शक्तिशाली उपकरण है, जो अधिकांश आदेश विफलताओं पर आपकी स्क्रिप्ट से अपने-आप बाहर निकलता है।
  • कस्टम त्रुटि संदेशों के लिए set -e को || के साथ संयोजित करें।

इन तकनीकों का उपयोग करने से आपको अधिक पेशेवर और स्थिर स्क्रिप्ट लिखने में सहायता मिलेगी।

शुरुआत निःशुल्क

एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
142
पाठ
568

अक्सर पूछे जाने वाले प्रश्न

क्या “त्रुटि प्रबंधन और निकास स्थिति” पाठ निःशुल्क है?

हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “त्रुटि प्रबंधन और निकास स्थिति” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“त्रुटि प्रबंधन और निकास स्थिति” में मैं क्या सीखूँगा?

निकास स्थितियों को समझकर और 'set -e' तथा सशर्त तर्क का उपयोग करके अपनी स्क्रिप्ट में मज़बूत त्रुटि जाँच लागू करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“त्रुटि प्रबंधन और निकास स्थिति” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Bash स्क्रिप्ट की डिबगिंग (set -x, trap)
  2. त्रुटि प्रबंधन और निकास स्थिति
  3. स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग
  4. Bats से Bash स्क्रिप्ट का परीक्षण
← DevOps बूटकैंप पर वापस जाएँ