ShellCheck एक स्टेटिक एनालिसिस टूल है जो बैश/एसएच शेल स्क्रिप्ट्स में खराब कोड के बारे में चेतावनियां और सुझाव दिखाता है। इसका उपयोग कई तरीकों से किया जा सकता है: वेब से https://www.shellcheck.net पर ऑनलाइन एडिटर (Ace - जावास्क्रिप्ट में लिखा एक स्टैंडअलोन कोड एडिटर) में अपना शेल स्क्रिप्ट पेस्ट करके (यह हमेशा नवीनतम गिट कमिट के साथ सिंक्रनाइज़ होता है, और ShellCheck को आज़माने का सबसे सरल तरीका है) तत्काल प्रतिक्रिया के लिए।
वैकल्पिक रूप से, आप इसे अपनी मशीन पर इंस्टॉल कर सकते हैं और टर्मिनल से चला सकते हैं, इसे अपने टेक्स्ट एडिटर के साथ इंटीग्रेट कर सकते हैं और साथ ही अपने बिल्ड या टेस्ट सूट्स में भी।
ShellCheck मुख्य रूप से तीन चीजें करता है:
- यह उन विशिष्ट शुरुआती सिंटैक्स मुद्दों को इंगित करता है और समझाता है जो शेल को गूढ़ त्रुटि संदेश देने का कारण बनते हैं।
- यह उन विशिष्ट मध्यवर्ती स्तर की सिमेंटिक समस्याओं को इंगित करता है और समझाता है जो शेल को अजीब और प्रति-सहज तरीके से व्यवहार करने का कारण बनते हैं।
- यह सूक्ष्म चेतावनियों, कॉर्नर केस और नुकसान को भी इंगित करता है जो एक उन्नत उपयोगकर्ता की अन्यथा काम करने वाली स्क्रिप्ट को भविष्य की परिस्थितियों में विफल होने का कारण बन सकते हैं।
इस लेख में, हम दिखाएंगे कि लिनक्स में अपने शेल स्क्रिप्ट्स में बग्स या खराब कोड खोजने के लिए विभिन्न तरीकों से ShellCheck को कैसे इंस्टॉल और उपयोग करें।
लिनक्स में ShellCheck कैसे इंस्टॉल और उपयोग करें
ShellCheck को अपने पैकेज मैनेजर के माध्यम से स्थानीय रूप से आसानी से इंस्टॉल किया जा सकता है जैसा दिखाया गया है।
Debian/Ubuntu पर
# apt-get install shellcheck
RHEL/CentOS पर
# yum -y install epel-release # yum install ShellCheck
Fedora पर
# dnf install ShellCheck
एक बार ShellCheck इंस्टॉल हो जाने पर, आइए देखें कि जिन विधियों का हमने पहले उल्लेख किया था, उनका उपयोग करके ShellCheck का उपयोग कैसे करें।
वेब से ShellCheck का उपयोग करना
https://www.shellcheck.net पर जाएं और प्रदान किए गए Ace एडिटर में अपना स्क्रिप्ट पेस्ट करें, आप एडिटर के नीचे आउटपुट देखेंगे जैसा स्क्रीनशॉट में दिखाया गया है।
निम्न उदाहरण में, टेस्ट शेल स्क्रिप्ट में निम्न लाइनें हैं:
#!/bin/bash #वेरिएबल्स घोषित करें MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #वेरिएबल्स के मान इको करें echo $MINARGS echo $E_NONROOT exit 0;

उपरोक्त स्क्रीनशॉट से, पहले दो वेरिएबल्स E_NOTROOT और E_MINARGS घोषित किए गए हैं लेकिन उपयोग नहीं किए गए हैं, ShellCheck इन्हें "सुझाव त्रुटियों" के रूप में रिपोर्ट करता है:
SC2034: E_NOTROOT appears unused. Verify it or export it. SC2034: E_MINARGS appears unused. Verify it or export it.
फिर दूसरी बात, गलत नाम (स्टेटमेंट echo $E_NONROOT में) का उपयोग वेरिएबल E_NOTROOT को इको करने के लिए किया गया था, इसलिए ShellCheck त्रुटि दिखाता है:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
फिर से जब आप इको कमांड्स को देखते हैं, तो वेरिएबल्स डबल कोटेड नहीं हैं (ग्लोबिंग और वर्ड स्प्लिटिंग को रोकने में मदद करता है), इसलिए Shell Check चेतावनी दिखाता है:
SC2086: Double quote to prevent globbing and word splitting.
टर्मिनल से ShellCheck का उपयोग करना
आप कमांड-लाइन से भी ShellCheck चला सकते हैं, हम ऊपर वाले शेल स्क्रिप्ट का उपयोग करेंगे:
$ shellcheck test.sh

टेक्स्ट एडिटर से ShellCheck का उपयोग करना
आप विभिन्न एडिटर्स में सीधे ShellCheck सुझावों और चेतावनियों को देख सकते हैं, यह शायद ShellCheck का उपयोग करने का एक अधिक कुशल तरीका है, एक बार जब आप फ़ाइल सेव करते हैं, तो यह आपको कोड में किसी भी त्रुटि को दिखाता है।
Vim में, ALE या Syntastic का उपयोग करें (हम इसका उपयोग करेंगे):
Pathogen इंस्टॉल करके शुरू करें ताकि syntastic इंस्टॉल करना आसान हो। pathogen.vim फ़ाइल और इसके लिए आवश्यक डायरेक्टरीज़ प्राप्त करने के लिए नीचे दिए गए कमांड्स चलाएं:
# mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
फिर इसे अपने ~/.vimrc फ़ाइल में जोड़ें:
execute pathogen#infect()
एक बार जब आप पैथोजन इंस्टॉल कर लेते हैं, और अब आप syntastic को ~/.vim/bundle में निम्नानुसार रख सकते हैं:
# cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
अगला, vim को बंद करें और इसे रीलोड करने के लिए वापस शुरू करें, फिर नीचे दी गई कमांड टाइप करें:
:Helptags
यदि सब ठीक रहा, तो आपके पास ShellCheck Vim के साथ इंटीग्रेटेड होना चाहिए, निम्न स्क्रीनशॉट दिखाते हैं कि यह ऊपर वाले स्क्रिप्ट का उपयोग करके कैसे काम करता है।

यदि उपरोक्त चरणों का पालन करने के बाद आपको त्रुटि मिलती है, तो संभवतः आपने Pathogen को सही ढंग से इंस्टॉल नहीं किया। चरणों को फिर से करें लेकिन सुनिश्चित करें कि आपने निम्न किया है:
- ~/.vim/autoload और ~/.vim/bundle दोनों डायरेक्टरीज़ बनाईं।
- execute pathogen#infect() लाइन को अपने ~/.vimrc फ़ाइल में जोड़ा।
- ~/.vim/bundle के अंदर syntastic का गिट क्लोन किया।
- उपरोक्त सभी डायरेक्टरीज़ तक पहुंचने के लिए उपयुक्त अनुमतियों का उपयोग करें।
आप शेल स्क्रिप्ट्स में खराब कोड जांचने के लिए अन्य एडिटर्स का भी उपयोग कर सकते हैं जैसे:
- Emacs में, Flycheck का उपयोग करें।
- Sublime में, SublimeLinter का उपयोग करें।
- Atom में, Linter का उपयोग करें।
- अधिकांश अन्य एडिटर्स में, GCC एरर संगतता का उपयोग करें।
नोट: अधिक ShellChecking करने के लिए खराब कोड की गैलरी का उपयोग करें।
ShellCheck GitHub रिपॉजिटरी: https://github.com/koalaman/shellcheck
बस इतना ही! इस लेख में, हमने दिखाया कि लिनक्स में अपने शेल स्क्रिप्ट्स में बग्स या खराब कोड खोजने के लिए ShellCheck को कैसे इंस्टॉल और उपयोग करें। अपने विचार नीचे कमेंट सेक्शन के माध्यम से हमारे साथ साझा करें।
क्या आप वहां किसी अन्य समान टूल के बारे में जानते हैं? यदि हाँ, तो उनके बारे में जानकारी कमेंट्स में भी साझा करें।