Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड

हमने शेल स्क्रिप्ट डीबगिंग श्रृंखला को विभिन्न डीबगिंग विकल्पों और शेल स्क्रिप्ट डीबगिंग मोड्स को सक्षम करने के तरीके की व्याख्या करके शुरू किया।

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

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

वर्बोज़ डीबगिंग मोड सक्षम करना

इस गाइड के प्राथमिक फोकस पर जाने से पहले, आइए संक्षेप में वर्बोज़ मोड का पता लगाएं। यह -v डीबगिंग विकल्प द्वारा सक्षम है, जो शेल को स्क्रिप्ट में सभी लाइनों को प्रदर्शित करने का निर्देश देता है जैसे ही वे पढ़ी जाती हैं।

यह प्रदर्शित करने के लिए कि यह कैसे काम करता है, नीचे PNG इमेज को JPG फॉर्मेट में बैच कन्वर्ट करने के लिए एक नमूना शेल स्क्रिप्ट है।

इसे एक फ़ाइल में टाइप करें (या कॉपी और पेस्ट करें)।

#!/bin/bash #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" done exit 0 

फिर फ़ाइल सहेजें और नीचे दिए गए कमांड का उपयोग करके स्क्रिप्ट को निष्पादन योग्य बनाएं:

$ chmod +x script.sh 

हम स्क्रिप्ट को आह्वान कर सकते हैं और शेल द्वारा पढ़ी जाने वाली सभी लाइनों को प्रदर्शित कर सकते हैं जैसे:

$ bash -v script.sh 
शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड

शेल स्क्रिप्ट्स में सिंटैक्स चेकिंग डीबगिंग मोड सक्षम करना

हमारे जोर के विषय पर वापस आते हुए, -n सिंटैक्स चेकिंग मोड को सक्रिय करता है। यह शेल को मूल रूप से सभी कमांड्स पढ़ने का निर्देश देता है, हालांकि उन्हें निष्पादित नहीं करता है, यह (शेल) केवल उपयोग किए गए सिंटैक्स की जांच करता है।

यदि आपकी शेल स्क्रिप्ट में त्रुटियां हैं, तो शेल टर्मिनल पर त्रुटियों को आउटपुट करेगा, अन्यथा, यह कुछ भी प्रदर्शित नहीं करता है।

सिंटैक्स चेकिंग सक्रिय करने का सिंटैक्स इस प्रकार है:

$ bash -n script.sh 

चूंकि स्क्रिप्ट में सिंटैक्स सही है, उपरोक्त कमांड कोई आउटपुट प्रदर्शित नहीं करेगा। इसलिए, आइए फोर लूप को बंद करने वाले done शब्द को हटाने का प्रयास करें और देखें कि क्या यह त्रुटि दिखाता है:

नीचे एक बग वाली PNG इमेज को JPG फॉर्मेट में बैच कन्वर्ट करने के लिए संशोधित शेल स्क्रिप्ट है।

#!/bin/bash #script with a bug #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" exit 0 

फ़ाइल सहेजें, फिर इसमें सिंटैक्स चेकिंग करते हुए इसे चलाएं:

$ bash -n script.sh 
शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड

उपरोक्त आउटपुट से, हम देख सकते हैं कि हमारी स्क्रिप्ट में सिंटैक्स की समस्या है, फोर लूप में एक समापन done कीवर्ड शब्द गायब है। और शेल ने फ़ाइल के अंत तक इसकी तलाश की और एक बार जब इसे नहीं मिला (done), तो शेल ने एक सिंटैक्स त्रुटि प्रिंट की:

script.sh: line 11: syntax error: unexpected end of file 

हम वर्बोज़ मोड और सिंटैक्स चेकिंग मोड को एक साथ भी जोड़ सकते हैं:

$ bash -vn script.sh 
शेल स्क्रिप्ट सिंटैक्स चेकिंग में मास्टरी: एक व्यावहारिक डीबगिंग गाइड

वैकल्पिक रूप से, हम ऊपर दिए गए अगले उदाहरण में स्क्रिप्ट की पहली लाइन को संशोधित करके सिंटैक्स चेकिंग सक्षम कर सकते हैं।

#!/bin/bash -n #स्क्रिप्ट की पहली लाइन को बदलकर सिंटैक्स चेकिंग सक्षम करना #convert for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" exit 0 

जैसा पहले था, फ़ाइल सहेजें और सिंटैक्स चेकिंग करते हुए इसे चलाएं:

$ ./script.sh script.sh: line 12: syntax error: unexpected end of file 

इसके अलावा, हम ऊपर दी गई स्क्रिप्ट में डीबगिंग मोड सक्षम करने के लिए सेट शेल बिल्ट-इन कमांड का उपयोग कर सकते हैं।

नीचे दिए गए उदाहरण में, हम अपनी स्क्रिप्ट में केवल फोर लूप के सिंटैक्स की जांच कर रहे हैं।

#!/bin/bash #using set shell built-in command to enable debugging #convert #enable debugging set -n for image in *.png; do convert "$image" "${image%.png}.jpg" echo "image $image converted to ${image%.png}.jpg" #disable debugging set +n exit 0 

एक बार फिर, फ़ाइल सहेजें और स्क्रिप्ट को आह्वान करें:

$ ./script.sh 

सारांश में, हमें हमेशा यह सुनिश्चित करना चाहिए कि हम अपनी शेल स्क्रिप्ट्स को सिंटैक्टिकली जांचें ताकि उन्हें निष्पादित करने से पहले किसी भी त्रुटि को पकड़ा जा सके।

इस गाइड के संबंध में हमें कोई भी प्रश्न या प्रतिक्रिया भेजने के लिए नीचे दिए गए प्रतिक्रिया फॉर्म का उपयोग करें। इस श्रृंखला के तीसरे भाग में, हम शेल ट्रेसिंग डीबगिंग मोड की व्याख्या और उपयोग पर आगे बढ़ेंगे।

  1. शेल ट्रेसिंग में मास्टरी: कमांड निष्पादन डीबगिंग के लिए चरण-दर-चरण शेल ट्रेसिंग में मास्टरी: कमांड निष्पादन डीबगिंग के लिए चरण-दर-चरण

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

  1. Vim में बैश स्क्रिप्ट हेडर्स स्वचालित करें: आसान कस्टम टेम्पलेट सेटअप Vim में बैश स्क्रिप्ट हेडर्स स्वचालित करें: आसान कस्टम टेम्पलेट सेटअप

    इस लेख में, हम आपको Vim एडिटर में नए बनाए गए सभी बैश स्क्रिप्ट्स के लिए एक कस्टम हेडर कॉन्फ़िगर करने का एक सरल तरीका दिखाएंगे। इसका मतलब है कि हर बार जब आप vi/vim एडिटर का उपयोग करके एक नई .sh फ़ाइल खोलते हैं, तो कस्टम हेडर स्वचालित रूप से फ़ाइल में जोड़ दिया जाएगा। कस्टम बैश स्क्रिप्ट हेडर टेम्पलेट

  1. एंड्रॉयड पर USB डिबगिंग कैसे इनेबल करें: चरण-दर-चरण मार्गदर्शिका एंड्रॉयड पर USB डिबगिंग कैसे इनेबल करें: चरण-दर-चरण मार्गदर्शिका

    कुछ ऐसा जो एक एंड्रॉयड उपयोगकर्ता को अवश्य जानना चाहिए उसमें USB डिबगिंग शामिल है जो एक अद्भुत और छिपी हुई सुविधा है। यह एक औसत उपयोगकर्ता के लिए महत्वपूर्ण नहीं लग सकता है लेकिन एक डेवलपर के लिए, यह वास्तव में एक अनिवार्य हिस्सा है। आगे बढ़ने से पहले, आइए इसके बारे में थोड़ा और समझते हैं। USB डिबगि