Daffodil International University

Career Development Centre (CDC) => Career Guidance => Academia Lecture Series => Topic started by: sanzid.swe on March 03, 2020, 11:13:54 AM

Title: বাংলায় শেল স্ক্রিপ্টিং- পর্ব ২ [ইউজার ইনপুট এবং কন্ডিশনাল লজিক]
Post by: sanzid.swe on March 03, 2020, 11:13:54 AM
আমরা আগে একটা ভেরিয়েবলে ভেলু এসাইন করা দেখেছি, এবং সে ভেলু একটি ফিক্সড ভেলু রিপ্রেজেন্ট করে। এখন যদি চাই আমি একটি ভেরিয়েবল ইউজ করবো এবং সেই ভেরিয়েবলের মধ্যে ইউজার তার ইচ্ছামতো ভেলু এসাইন করবে অর্থাৎ ইউজার থেকে ইনপুট নিবো? আসলে এইরকম কেইসই আমরা সামনে বেশি দেখতে পাবো, যেখানে ইউজার থেকে ইনপুট নিয়ে সেই ভেলু দিয়ে বিভিন্ন ধরনের অপারেশন করা হচ্ছে।

ইউজার ইনপুট নেয়া
ইনপুট নিতে হলে শেল স্ক্রিপ্টিং এ আমরা read লাইব্রেরী ইউজ করি। মনে করি আমরা a একটি ভেরিয়েবল যার ভেলু ইউজার ডিফাইন্ড করবে-

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

এবার একটি টেক্সট ফাইলে কমান্ডগুলো লিখে নিজে ট্রাই করে দেখুন-
echo "What is your name?"
read myName
echo "Hi, Mr $myName! How are you?"
1
2
3
echo "What is your name?"
read myName
echo "Hi, Mr $myName! How are you?"
লিখে এবার টেক্সট ফাইলটি টার্মিনাল থেকে এক্সিকিউট করুন… দেখুন একটি সুন্দর স্ক্রিপ্ট তৈরি হয়ে গিয়েছে।

 

কন্ডিশনাল লজিক
কন্ডিশনাল লজিক বলতে If- else আপারেশনই বুঝায়। আমরা নিচের প্রোগ্রামটি খেয়াল করি- (সরাসরি টার্মিনালে কোড করা, আমরা চাইলে টেক্সট ইডিটিরে কোড লিখে টার্মিনালে রান করেও এক্সিকিউট করতে পারি)।

read a
12
if test $a -gt 10
then echo $a is greater than 10
else echo $a is less than 10
fi
12 is greater than 10
1
2
3
4
5
6
7
read a
12
if test $a -gt 10
then echo $a is greater than 10
else echo $a is less than 10
fi
12 is greater than 10
আমরা এখানে a নামে একটা ভেরিয়েবল ইনপুট নিয়েছি এবং ভেলু হিসেবে 12 এসাইন করেছি।
৩ নাম্বার লাইনে কন্ডিশনাল লজিক এর if এর জন্য if test লিখেছি এবং এর পরেই আমাদের লজিক কি সেটা লিখেছি, অর্থাৎ এখানে আমাদের কী-ওয়ার্ড হল if test । মানে if test ইউজ করে আমরা যে কন্ডিশনটি সত্য সেই কন্ডিশন লিখবো।
এখানে আবার -gt নামে একটি কী-ওয়ার্ড ইউজ করা হয়েছে যার অর্থ Greater then, এটি নিয়ে নিচে বিস্তারিত আলোচনা করবো…
এখানে if কন্ডিশনের বডি লেখা হয়েছে, এবং if কন্ডিশনের বডি শুরু করার আগে একটা then কী-ওয়ার্ড ইউজ করতে হয়।
এবার আসি else কন্ডিশনে। else এর জন্য শুধু else  কী-ওয়ার্ডই ইউজ করবো। অর্থাৎ if কন্ডিশনটি যদি সত্য না হয় তাহলে else এর বডি এক্সিকিউট হবে।
লাস্টের fi কী-ওয়ার্ড দেখে চমকে যাবেন না! এটি একটু আলাদা অন্যান্য ল্যাংগুয়েজ থেকে… অর্থাৎ কোন কন্ডিশনাল লজিক শুরু করতে হলে if দিয়ে শুরু করতে হয় এবং শেষ করতে হলে ঠিক এটার উল্টো কী-ওয়ার্ড fi ইউজ করে কন্ডিশন শেষ করতে হয়।
অথবা আমরা স্ট্রাকচারটা এভাবেও লিখতে পারি-

if  [ condition.. ]; then
echo "body.."
elif [ more condition.. ]; then
echo "body"
else
echo "body.."
fi
1
2
3
4
5
6
7
if  [ condition.. ]; then
echo "body.."
elif [ more condition.. ]; then
echo "body"
else
echo "body.."
fi
ব্যাস শেলে  Less then/ Greater then এই কন্ডিশনগুলো সংক্ষিপ্ত কিছু কী-ওয়ার্ড দ্বারা প্রকাশ করা হয়, তার লিস্ট আমি নিচে দিয়ে দিচ্ছি-

-eq → Equal
-gt → Greater Than
-lt → Less Than
-ne → Not Equal
-ge → Greater Equal
-le → Less Equal
এবার একটি টেক্সট ফাইলে কমান্ডগুলো লিখে নিজে ট্রাই করে দেখুন-
Shell
echo "Enter the value of a:"
read a
echo "Enter the value of b:"
read b
if [ $a -gt $b ];
then echo "$a is  greater then $b"
else echo "$a is  less then $b"
fi
1
2
3
4
5
6
7
8
echo "Enter the value of a:"
read a
echo "Enter the value of b:"
read b
if [ $a -gt $b ];
then echo "$a is  greater then $b"
else echo "$a is  less then $b"
fi

আমার ব্লগের মূল লেখা- https://bit.ly/38btbaw