ডিবাগিং শেল স্ক্রিপ্ট
শেল স্ক্রিপ্টের ডিবাগিং হল স্ক্রিপ্টে ত্রুটি বা ভুল শনাক্ত এবং সংশোধন করার প্রক্রিয়া। অনেক সময় শেল স্ক্রিপ্টে ভুল থাকতে পারে যা প্রোগ্রামের কার্যকারিতা ব্যাহত করতে পারে। শেল স্ক্রিপ্টের ডিবাগিং করার জন্য বিভিন্ন টুলস এবং পদ্ধতি রয়েছে যা স্ক্রিপ্টের ভুল বা ত্রুটি খুঁজে বের করতে সহায়ক।
নিচে কিছু প্রধান পদ্ধতি ও টুলস দেওয়া হয়েছে যা শেল স্ক্রিপ্ট ডিবাগিংয়ের সময় ব্যবহার করা যেতে পারে।
1. set -x এবং set +x ব্যবহার
set -x শেল স্ক্রিপ্টের প্রতিটি কমান্ড এবং তার আর্গুমেন্টের আউটপুট প্রদর্শন করতে সাহায্য করে। এটি স্ক্রিপ্টে প্রবাহটি পর্যবেক্ষণ করতে সহায়ক হয়। আপনি যখন set -x চালু করবেন, তখন শেল প্রতিটি এক্সিকিউট করা কমান্ডের আউটপুট স্ক্রিনে প্রদর্শন করবে।
- কমান্ডের আউটপুট দেখার জন্য
set -xব্যবহার করা:
#!/bin/bash
# Debugging enabled
set -x
echo "This is a test message"
ls -l
# Disable debugging
set +xএটি স্ক্রিপ্টের প্রতিটি কমান্ডের আগে + চিহ্নের মাধ্যমে সেগুলির আউটপুট প্রদর্শন করবে।
set +x ব্যবহার করে ডিবাগিং বন্ধ করা যায়।
2. set -e ব্যবহার
set -e কমান্ডটি স্ক্রিপ্টের এক্সিকিউশনের সময় যদি কোনো ত্রুটি ঘটে তবে স্ক্রিপ্টকে থামিয়ে দেয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন আপনি নিশ্চিত করতে চান যে আপনার স্ক্রিপ্টের কোনো কমান্ড ব্যর্থ হলে পরবর্তী কোড চালানো না হবে।
- কমান্ডের ত্রুটি থামানোর জন্য
set -eব্যবহার করা:
#!/bin/bash
set -e
echo "This is a test message"
ls non_existent_file # This will cause an error and stop the script
echo "This will not be executed"এখানে, ls non_existent_file কমান্ডটি ব্যর্থ হলে স্ক্রিপ্টের এক্সিকিউশন থেমে যাবে এবং পরবর্তী লাইনটি এক্সিকিউট হবে না।
3. echo ব্যবহার
স্ক্রিপ্টে চলমান কমান্ড বা ভেরিয়েবলের মান চেক করতে echo কমান্ডটি ব্যবহার করা যেতে পারে। এটি স্ক্রিপ্টে ভেরিয়েবলগুলির মান দেখতে সাহায্য করে।
echoব্যবহার করে ভেরিয়েবলের মান দেখতে:
#!/bin/bash
name="John"
echo "The name is: $name"
# Loop through a list
for i in {1..5}; do
echo "Processing number $i"
doneএই স্ক্রিপ্টটি ভেরিয়েবল $name এবং লুপের প্রতিটি আইটেম প্রদর্শন করবে।
4. trap কমান্ড ব্যবহার
trap কমান্ডটি শেলের সিগন্যাল এবং সিগন্যাল হ্যান্ডলার সেট করতে ব্যবহৃত হয়। এটি একটি ত্রুটি বা নির্দিষ্ট পরিস্থিতিতে বিশেষ কোনো কাজ বা কমান্ড চালানোর জন্য ব্যবহার করা যায়।
trapব্যবহার করে ত্রুটি হ্যান্ডলিং:
#!/bin/bash
# Trap errors
trap 'echo "An error occurred. Exiting..."' ERR
echo "Start script"
ls non_existent_file
echo "This line will not be executed"এখানে, trap ত্রুটি (ERROR) ঘটলে একটি মেসেজ প্রিন্ট করবে এবং স্ক্রিপ্টটি থামিয়ে দেবে।
5. debug ফ্ল্যাগ (ডিবাগ মোড)
আপনি শেল স্ক্রিপ্টটি চালানোর সময় -x ফ্ল্যাগ ব্যবহার করে ডিবাগ মোডে চালাতে পারেন:
bash -x script.shএটি স্ক্রিপ্টের প্রতিটি কমান্ড এবং তার আর্গুমেন্ট প্রদর্শন করবে, যা স্ক্রিপ্টের কার্যক্রম মনিটর করতে সহায়তা করে।
6. set -v ব্যবহার
set -v স্ক্রিপ্টে লেখা প্রতিটি কমান্ড স্ক্রিনে প্রদর্শন করবে, তবে এটি set -x থেকে আলাদা কারণ এটি শুধুমাত্র স্ক্রিপ্টের লাইনের টেক্সট দেখায়, এক্সিকিউটেড কমান্ড নয়।
set -vব্যবহার:
#!/bin/bash
set -v
echo "This will be printed"
ls -lএটি স্ক্রিপ্টের প্রতিটি লাইন সেল্ফ-প্রিন্ট করবে।
7. শেল স্ক্রিপ্টে লগিং
লগ ফাইল ব্যবহার করে স্ক্রিপ্টের আউটপুট এবং ত্রুটির তথ্য সংরক্ষণ করা যায়। এটি ডিবাগিং এবং ভবিষ্যতে ট্র্যাক করার জন্য কার্যকরী।
#!/bin/bash
LOGFILE="/tmp/script.log"
# Redirect stdout and stderr to log file
exec > $LOGFILE 2>&1
echo "Script started"
ls -l
echo "Script finished"এখানে, exec > $LOGFILE 2>&1 কমান্ডটি সমস্ত আউটপুট (stdout এবং stderr) /tmp/script.log ফাইলে রিডাইরেক্ট করবে।
8. শেল স্ক্রিপ্টের ত্রুটি সমাধান
যখন স্ক্রিপ্টে ত্রুটি ঘটে, তখন আপনি echo, set -e, set -x, এবং trap কমান্ড ব্যবহার করে সমস্যার উৎস চিহ্নিত করতে পারেন। এছাড়াও, শেল স্ক্রিপ্টের মধ্যে লগ ফাইল সংরক্ষণ করা এবং পর্যাপ্ত মন্তব্য যুক্ত করা স্ক্রিপ্টের ডিবাগিং আরও সহজ করে তোলে।
সারসংক্ষেপ
শেল স্ক্রিপ্ট ডিবাগিং হল একটি প্রক্রিয়া যেখানে বিভিন্ন কমান্ড, অপশন এবং পদ্ধতির সাহায্যে স্ক্রিপ্টের ত্রুটি বা সমস্যা চিহ্নিত করা হয়। আপনি set -x, set -v, echo, trap, এবং অন্যান্য ডিবাগিং টুল ব্যবহার করে স্ক্রিপ্টে কোনো সমস্যা শনাক্ত এবং সংশোধন করতে পারেন। set -e ব্যবহার করে স্ক্রিপ্টের ত্রুটি ঘটলে স্বয়ংক্রিয়ভাবে থামানো যেতে পারে।
Read more