Bash स्क्रिप्ट की डिबगिंग (set -x, trap)
अपनी Bash स्क्रिप्ट की डिबगिंग की विधियाँ जानें, जिनमें निष्पादन का अनुरेखण और त्रुटि प्रबंधन के लिए 'trap' का उपयोग शामिल है।
Bash स्क्रिप्ट की डिबगिंग (set -x, trap), CoddyKit पर DevOps बूटकैंप का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह DevOps बूटकैंप सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
अपनी स्क्रिप्ट की त्रुटियाँ दूर क्यों करें?
सबसे अच्छी स्क्रिप्ट में भी बग हो सकते हैं! डीबगिंग इन त्रुटियों को खोजने और ठीक करने की प्रक्रिया है।
यह हर डेवलपर के लिए एक महत्वपूर्ण कौशल है, जो आपको यह समझने में सहायता करता है कि आपकी स्क्रिप्ट चरण-दर-चरण क्या कर रही है और कहाँ कुछ गलत हो सकता है।
इस पाठ में आप निष्पादन का पता लगाने और अनपेक्षित घटनाओं को सँभालने के लिए शक्तिशाली Bash उपकरण सीखेंगे।
`set -x` से अपनी स्क्रिप्ट का अनुरेखण करें
Bash में सबसे सरल और प्रभावी त्रुटि-निवारण उपकरणों में से एक set -x है। यह आदेश अनुरेखण सक्षम करता है।
- सक्रिय होने पर, Bash प्रत्येक आदेश और उसके तर्कों को निष्पादित करने से ठीक पहले मानक त्रुटि पर प्रिंट करता है (आमतौर पर इसका अर्थ आपका टर्मिनल होता है)।
- इस आउटपुट में विस्तार के बाद चरों की स्थिति शामिल होती है, जिससे आपको स्पष्ट रूप से दिखाई देता है कि Bash क्या करने वाला है।
- यह ऐसा है जैसे आप अपनी स्क्रिप्ट को धीमी गति में चलते हुए देख रहे हों!
`set -x` को काम करते हुए देखना
आइए set -x को कार्य करते हुए देखें। ध्यान दें कि शेल चर-विस्तार के बाद प्रत्येक आदेश को + चिह्न से शुरू करके प्रिंट करता है।
इस उदाहरण को चलाने का प्रयास करें:
#!/bin/bash
# Enable command tracing
set -x
NAME="Coddy"
MESSAGE="Hello, $NAME!"
echo $MESSAGE
# This command will intentionally fail
ls -l /nonexistent_directory
# Disable command tracing
set +x
echo "Tracing is now off."अनुरेखण आउटपुट को समझना
जब set -x सक्षम होता है, तो आपको + चिह्न से शुरू होने वाली पंक्तियाँ दिखाई देंगी। यह अनुरेखण आउटपुट को दर्शाता है।
+के बाद वह आदेश आता है जिसे Bash निष्पादित करने वाला है, साथ ही किसी भी चर या आदेश प्रतिस्थापन के बाद उसके तर्क भी आते हैं।- यह चरों के सटीक मान और चलाए जा रहे आदेश को ठीक-ठीक देखने के लिए अत्यंत उपयोगी है।
- यह गलत पथों, खाली चरों या अनपेक्षित आदेश संरचनाओं जैसी समस्याओं का सटीक स्थान पता करने में सहायता करता है।
`set -x` का क्षेत्र नियंत्रित करना
आपको हमेशा पूरी स्क्रिप्ट का अनुरेखण करने की आवश्यकता नहीं होती। आप विशिष्ट अनुभागों के लिए set -x सक्षम कर सकते हैं:
- अनुरेखण चालू करने के लिए
set -xका उपयोग करें। - अनुरेखण बंद करने के लिए
set +xका उपयोग करें।
इससे आप स्थिर अनुभागों के आउटपुट से परेशान हुए बिना अपनी स्क्रिप्ट के समस्याग्रस्त भागों पर त्रुटि-निवारण का ध्यान केंद्रित कर सकते हैं।
`trap` से घटनाओं को संभालना
trap आदेश आपको संकेतों और अन्य घटनाओं को पकड़ने तथा उनके घटित होने पर कोई आदेश निष्पादित करने देता है। यह इन कार्यों के लिए बहुत उपयोगी है:
- सफ़ाई: अस्थायी फ़ाइलें हटाई जाना सुनिश्चित करना।
- त्रुटि प्रबंधन: विफल आदेशों पर प्रतिक्रिया देना।
- सौम्य निकास: Ctrl+C जैसे उपयोगकर्ता व्यवधानों को संभालना।
मूल वाक्यविन्यास trap 'command_to_execute' SIGNAL_OR_EVENT है।
`trap EXIT` से सफ़ाई
EXIT छद्म-संकेत विशेष होता है। EXIT के साथ ट्रैप किया गया आदेश आपकी स्क्रिप्ट समाप्त होने से ठीक पहले चलेगा, चाहे वह किसी भी प्रकार समाप्त हो (सफलता, विफलता या व्यवधान)।
यह अस्थायी फ़ाइलें हटाने जैसे सफ़ाई कार्यों के लिए बिल्कुल उपयुक्त है। इस स्क्रिप्ट को चलाने का प्रयास करें:
#!/bin/bash
TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"
# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT
echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"
# Simulate some work
sleep 2
echo "Script logic completed. Exiting..."`trap ERR` से त्रुटियाँ पकड़ना
ERR छद्म-संकेत तब सक्रिय होता है जब कोई आदेश शून्येतर स्थिति के साथ समाप्त होता है (अर्थात वह विफल हो जाता है)। इससे आप त्रुटि होने पर विशेष रूप से कुछ कार्य कर सकते हैं।
ध्यान दें: trap ERR तभी काम करता है जब आदेश किसी if, while या until शर्त का भाग न हो, या उसके वापसी मान की स्पष्ट रूप से जाँच न की जा रही हो (उदाहरण के लिए, command || true)।
#!/bin/bash
# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR
echo "Starting script with an intentional error..."
# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist
echo "This line will NOT be reached if an error occurs."संकेतों पर प्रतिक्रिया देना (INT, TERM)
trap मानक Linux संकेतों को भी पकड़ सकता है। इनमें सामान्य संकेत ये हैं:
INT(व्यवधान): जब आपCtrl+Cदबाते हैं, तब भेजा जाता है।TERM(समापन): किसी प्रक्रिया को सुव्यवस्थित ढंग से समाप्त करने का अनुरोध।
इन संकेतों को ट्रैप करने से आपकी स्क्रिप्ट अचानक बंद होने के बजाय बंद होने से पहले सफ़ाई कर सकती है या स्थिति सहेज सकती है।
#!/bin/bash
# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT
echo "Running a continuous task. Press Ctrl+C to stop."
while true; do
echo "Working... $(date)"
sleep 3
doneत्रुटि-निवारण जाँच
आइए Bash की त्रुटि-निवारण तकनीकों की आपकी समझ जाँचें।
पुनरावलोकन: अपनी स्क्रिप्ट का त्रुटि-निवारण
बहुत अच्छा! आपने अपनी Bash स्क्रिप्ट का त्रुटि-निवारण करने के लिए आवश्यक उपकरण सीख लिए हैं:
set -x: आदेश अनुरेखण सक्षम करता है और आपको ठीक-ठीक दिखाता है कि Bash क्या निष्पादित करता है। इसे बंद करने के लिएset +xका उपयोग करें।trap: विशिष्ट घटनाओं या संकेतों की प्रतिक्रिया में आदेश निष्पादित करने देता है।- `trap EXIT`: सुनिश्चित करता है कि स्क्रिप्ट समाप्त होने से पहले सफ़ाई कार्य चलें।
- `trap ERR`: शून्येतर स्थिति के साथ समाप्त होने वाले आदेशों को पकड़ता है।
- `trap INT`/`TERM`: उपयोगकर्ता के व्यवधानों या समापन अनुरोधों को सुव्यवस्थित ढंग से संभालता है।
इन तकनीकों में दक्षता आपकी समस्याओं का पता लगाने और मजबूत Bash स्क्रिप्ट बनाने की क्षमता में काफ़ी सुधार करेगी!
एआई शिक्षक के साथ DevOps बूटकैंप सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 142
- पाठ
- 568
अक्सर पूछे जाने वाले प्रश्न
क्या “Bash स्क्रिप्ट की डिबगिंग (set -x, trap)” पाठ निःशुल्क है?
हाँ — DevOps बूटकैंप अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Bash स्क्रिप्ट की डिबगिंग (set -x, trap)” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। DevOps बूटकैंप पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Bash स्क्रिप्ट की डिबगिंग (set -x, trap)” में मैं क्या सीखूँगा?
अपनी Bash स्क्रिप्ट की डिबगिंग की विधियाँ जानें, जिनमें निष्पादन का अनुरेखण और त्रुटि प्रबंधन के लिए 'trap' का उपयोग शामिल है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ DevOps बूटकैंप का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या DevOps बूटकैंप शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर DevOps बूटकैंप शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“Bash स्क्रिप्ट की डिबगिंग (set -x, trap)” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस DevOps बूटकैंप पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर DevOps बूटकैंप पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Bash स्क्रिप्ट की डिबगिंग (set -x, trap)
- त्रुटि प्रबंधन और निकास स्थिति
- स्क्रिप्टिंग की श्रेष्ठ प्रथाएँ और लिंटिंग
- Bats से Bash स्क्रिप्ट का परीक्षण