ShellCheck একটি স্ট্যাটিক অ্যানালাইসিস টুল যা বাশ/শেল স্ক্রিপ্টে খারাপ কোড সংক্রান্ত সতর্কতা এবং সুপারিশ প্রদর্শন করে। এটি একাধিকভাবে ব্যবহার করা যাবে: ওয়েব থেকে আপনার শেল স্ক্রিপ্ট অনলাইন এডিটরে (Ace – জাভাস্ক্রিপ্টে লিখিত একটি স্ট্যান্ডঅ্যালোন কোড এডিটর) https://www.shellcheck.net-এ পেস্ট করে (এটি সর্বদা লেটেস্ট গিট কমিটের সাথে সিঙ্ক্রোনাইজড থাকে, এবং ShellCheck ট্রাই করার সবচেয়ে সহজ উপায়) ইনস্ট্যান্ট ফিডব্যাক পেতে।
বিকল্পভাবে, আপনি আপনার মেশিনে এটি ইনস্টল করে টার্মিনাল থেকে রান করতে পারেন, আপনার টেক্সট এডিটরের সাথে ইন্টিগ্রেট করতে পারেন এবং আপনার বিল্ড বা টেস্ট সুইটে ব্যবহার করতে পারেন।
ShellCheck মূলত তিনটি কাজ করে:
- এটি সাধারণ বigenনার সিনট্যাক্স সমস্যা নির্দেশ ও ব্যাখ্যা করে যা শেলকে ক্রিপ্টিক এরর মেসেজ দিতে বাধ্য করে।
- এটি সাধারণ ইন্টারমিডিয়েট লেভেলের সেমান্টিক সমস্যা নির্দেশ ও ব্যাখ্যা করে যা শেলকে বিচিত্র এবং কাউন্টার-ইনটুইটিভ আচরণ করতে বাধ্য করে।
- এটি সূক্ষ্ম চূড়ান্ত কেস এবং পিটফলও নির্দেশ করে যা একটি উন্নত ব্যবহারকারীর অন্যথা ওয়ার্কিং স্ক্রিপ্টকে ভবিষ্যতে ফেইল করতে পারে।
এই আর্টিকেলে, আমরা দেখাব কীভাবে লিনাক্সে শেল স্ক্রিপ্টে বাগ বা খারাপ কোড খুঁজে বের করতে 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 #declare variables MINARGS=2 E_NOTROOT=50 E_MINARGS=100 #echo values of variables echo $MINARGS echo $E_NONROOT exit 0;

উপরের স্ক্রিনশট থেকে, প্রথম দুটি ভেরিয়েবল E_NOTROOT এবং E_MINARGS ডিক্লেয়ার করা হলেও যেসব unused, 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
আবার একো কমান্ডগুলে ভেরিয়েবলগুলো ডবল কোটেড নয় (গ্লবিং এবং ওয়ার্ড স্প্লিটিং প্রতিরোধে সাহায্য করে), তাই ShellCheck সতর্কতা দেখাচ্ছে:
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
এরপর, ভিম বন্ধ করুন এবং পুনরায় শুরু করুন এটি রিলোড করতে, তারপর নিচের কমান্ড টাইপ করুন:
:Helptags
সব ঠিক থাকলে, আপনার Vim-এর সাথে ShellCheck ইন্টিগ্রেটেড থাকা উচিত, নিচের স্ক্রিনশটগুলো দেখায় উপরের একই স্ক্রিপ্ট দিয়ে এটি কীভাবে কাজ করে।

যদি উপরের ধাপগুলো অনুসরণ করার পর এরর পান, তবে সম্ভবত আপনি Pathogen সঠিকভাবে ইনস্টল করেননি। ধাপগুলো পুনরায় করুন কিন্তু নিশ্চিত করুন যে আপনি নিচের مواردগুলো করেছেন:
- ~/.vim/autoload এবং ~/.vim/bundle ডিরেক্টরি দুটি তৈরি করা।
- আপনার ~/.vimrc ফাইলে execute pathogen#infect() লাইন যোগ করা।
- ~/.vim/bundle-এ syntastic-এর গিট ক্লোন করা।
- উপরের সব ডিরেক্টরি অ্যাক্সেসের জন্য উপযুক্ত পারমিশন ব্যবহার করা।
শেল স্ক্রিপ্টে খারাপ কোড চেক করার জন্য আপনি অন্যান্য এডিটরও ব্যবহার করতে পারেন যেমন:
- Emacs-এ, Flycheck ব্যবহার করুন।
- Sublime-এ, SublimeLinter ব্যবহার করুন।
- Atom-এ, Linter ব্যবহার করুন।
- বольшинство অন্যান্য এডিটরে, GCC এরর কম্প্যাটিবিলিটি ব্যবহার করুন।
নোট: আরও ShellChecking করার জন্য খারাপ কোডের গ্যালারি ব্যবহার করুন।
ShellCheck গিটহাব রিপোজিটরি: https://github.com/koalaman/shellcheck
এই পর্যন্ত! এই আর্টিকেলে, আমরা দেখিয়েছি কীভাবে ShellCheck ইনস্টল এবং ব্যবহার করে লিনাক্সে আপনার শেল স্ক্রিপ্টে বাগ বা খারাপ কোড খুঁজে বের করতে হয়। কমেন্ট সেকশন vía আপনার মতামত শেয়ার করুন।
আপনি কি অন্য কোনো সিমিলার টুল জানেন? হ্যাঁ হলে সেগুলোর তথ্য কমেন্টে শেয়ার করুন।