বাংলায় শেল স্ক্রিপ্টিং- পর্ব ৫ [মাল্টিপল কন্ডিশনাল লজিক লজিক]

আগের একটা লেখাতে কন্ডিশনাল লজিক কি, কেন এবং কিভাবে লিখতে হয় তা মোটামুটিভাবে ক্লিয়ার করেছি। আজকের লেখাতে দেখাবো মাল্টিপল লজিক, অর্থাৎ অনেকগুলো লজিক একসাথে ব্যবহার করা।

একই কন্ডিশনে একাধিক লজিক নিয়ে কাজ করাঃ

মাল্টিপল লজিক বলতে আসলে বুঝায় একাধিক যুক্তি, মানে যেখানে একের অধিক কন্ডিশন মেইনটেইন করে আমাদের কোন কাজ সম্পাদন করতে হবে। আমরা আগেই দেখেছি, একটা কন্ডিশনাল লজিককে আমরা নিচের মত করে রিপ্রেজেন্ট করতে পারি-

if  [ condition.. ];
then echo "body.."
else
echo "condition.."
fi
  • ধরুন বলা হল, ফাহাদ সাহেবের ছেলে হলে সিএসই পড়বে আর মেয়ে হলে মেডিকেল পড়বে। তাহলে এটি খুব সহজেই করে ফেলা যাবে। কিন্তু যদি বলা হয়, ফাহাদ সাহেবের যদি ছেলে হয় এবং জন্মাবস্থায় ওজন ২ কেজির বেশি হয় তাহলে সিএসই পড়বে আর মেয়ে হলে মেডিকেল পরবে… তাহলে কিভাবে করবো?? হ্যা, এটিই হল মাল্টিপল লজিক।

এবার নিচের কেডগুলো দেখি-

read a
if [ $a -gt 5 -a $a lt 8 ]
then echo "ok!"

else
if [ $a -le 5 ]
then echo "out of lower range!"
else echo "out of upper range!"
fi
fi
  • এখানে প্রথম লাইনে একটা ভেরিয়েবল ইনপুট নিয়েছি এবং সেকেন্ড লাইনে করেছি মাল্টিপল লজিকের মূল কাজ।
  • সেকেন্ড লাইনে খেয়াল করলে আমরা দুইটা কন্ডিশন দেখতে পারছি- একটা হল $a -gt এবং অন্যটি $a lt 8 যেখানে একটি কী-ওয়ার্ড দিয়ে কন্ডিশন দুইটিকে সংযুক্ত করা হয়েছে এবং সেটি হল -a যার অর্থ এখানে AND. এই ধরনের আরও এক্সপ্রেশনগুলো ব্যাশ প্রোগ্রামিং এ নিচের মত রিপ্রেজেন্ট করা হয়-
    • NOT → !
    • AND → -a
    • OR → -0
  • ৩ নাম্বার লাইনে আগের কন্ডিশনের বডি লিখেছি, অর্থাৎ আগের কন্ডিশনটি সত্য হলে এটি এক্সিকিউট হবে।
  • এরপর else কী-ওয়ার্ড ইউজ করে সেটির মধ্যে আবার একটি কন্ডিশনাল লজিক লেখা হয়েছে, এটিকে বলে নেস্টেড কন্ডিশন। ( এটা সকলেরই বোধগম্য হয়েছে আশা করি)।
  • শেষে দুইটা fi অর্থাৎ, if এর দুইটা ক্লোজিং কী-ওয়ার্ড ব্যবহার করা হয়েছে- একটি প্রথম if এর জন্য এবং অন্যটি পরের if এর জন্য।

এটি টেক্সট ইডিটরে লিখে রান করলে সুন্দর একটি স্ক্রিপ্ট তৈরি হয়ে যাবে দেখতে পাবেন।

 

একই কন্ডিশনাল লজিকের মধ্যে অনেকগুলো কন্ডিশনে কাজ করাঃ

নিচের প্রোগ্রাম টা লক্ষ্য করি-

read a
if [ $a -gt 0 ]
then echo "positive!"
elif [ $a -eq 0 ]
then echo "zero!"
else echo "negative!"
fi
  • আশা করি বুঝতে পেরেছেন। এখানে ৪ নাম্বার লাইনে শুধুমাত্র if এবং else এর বাইরে অন্য কোন কন্ডিশন ইউজ করতে elif কী-ওয়ার্ড ইউজ করা হয়েছে।

 

এবার এই কনসেপ্টকে ব্যবহার করে আমরা একটা প্রবলেম সলভ করতে পারি-

#প্রবলেমঃ ফাহাদ সাহেবের ছেলে হয়েছে, এবং বাচ্চাটার ওজন ছিল ২.৩ কেজি। ছেলেটিকে পূর্বপরিকল্পনা অনুযায়ী সিএসই ইঞ্জিনিয়ারিং এ ভর্তি করিয়েছেন। তার ফলশ্রুতিতে ফাহাদ সাহেবকে নিজের হাতে তার ছেলের প্রতিটা সাবজেক্টের জিপিএ হিসাব করতে হয় প্রতিনিয়ত। মার্কসের হিসাবটা এরকম-

  • ৮০ – ১০০% হলে A+
  • ৭৫ – ৭৯% হলে A
  • ৭০ – ৭৪ হলে A-
  • ৬৫ – ৬৯ হলে B+
  • ৬০ – ৬৪ হলে B

এর চেয়ে নিচে মার্কস পাওয়া ফাহাদ সাহেবের ছেলের কাছে অপ্রত্যাশিত! এবার ফাহাদ সাহেবের কাজের সুবিধার্থে একটা প্রোগ্রাম লিখুন, যেখানে মার্কস ইনপুট দিলে গ্রেডিং টা প্রিন্ট করে দেখাবে। শুভ কামনা সবাইকে…