শেল হলো একটি ইন্টারফেস যার মাধ্যমে প্রোগ্রামার কমান্ড এক্সিকিউট করতে পারেন এবং অপারেটিং সিস্টেমের সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারেন। শেল স্ক্রিপ্টিং হলো শেল যা কমান্ড এক্সিকিউট করতে পারে সেসব কমান্ড দেওয়া।
শেল-ও ভেরিয়েবল এবং অপারেটর রয়েছে যেগুলো এই ভেরিয়েবলগুলো ম্যানিপুলেট করতে ব্যবহৃত হয়। শেল স্ক্রিপ্টিং-এ ৫টি বেসিক অপারেটর রয়েছে।
- অ্যারিথমেটিক অপারেটর
- রিলেশনাল অপারেটর
- বুলিয়ান অপারেটর
- বিটওয়াইজ অপারেটর
- ফাইল টেস্ট অপারেটর
অ্যারিথমেটিক অপারেটর
শেল স্ক্রিপ্টিং-এ অ্যারিথমেটিক অপারেটর সাধারণ গাণিতিক অপারেশন করার জন্য ব্যবহৃত হয়। শেল স্ক্রিপ্টিং-এ ৭টি বৈধ অ্যারিথমেটিক অপারেটর রয়েছে −
যোগ (+) দুটি অপারেন্ড (ভেরিয়েবল) যোগ করতে ব্যবহৃত হয়।
বিয়োগ (-) দুটি ভেরিয়েবল (অপারেন্ড) বিয়োগ করতে ব্যবহৃত হয়।
গুণ (*) দুটি ভেরিয়েবল (অপারেন্ড) গুণ করতে ব্যবহৃত হয়।
ভাগ (/) দুটি ভেরিয়েবল (অপারেন্ড) ভাগ করতে ব্যবহৃত হয়।
মডুলাস (%) অপারেন্ড ভাগ করার রিমেইন্ডার বের করতে ব্যবহৃত হয়।
ইনক্রিমেন্ট অপারেটর (++) অপারেটরের কারেন্ট ভ্যালুতে ১ যোগ করতে ব্যবহৃত হয়।
ডিক্রিমেন্ট অপারেটর (--) অপারেটরের কারেন্ট ভ্যালু থেকে ১ বিয়োগ করতে ব্যবহৃত হয়।
উদাহরণ
শেল স্ক্রিপ্টিং-এ অ্যারিথমেটিক অপারেটর বাস্তবায়ন দেখানো হলো −
a = 32 b = 23 add = $((a + b)) echo sum of a and b is $add sub = $((a - b)) echo Subtraction of a and b is $sub mul = $((a * b)) echo product of a and b is $mul div = $((a / b)) echo division of a and b is $div mod = $((a % b)) echo remainder when a is divided b is $mod ((++a)) echo Increment operator when applied on "a" results into a = $a ((--b)) echo Decrement operator when applied on "b" results into b = $b
আউটপুট
sum of a and b is 55 Subtraction of a and b is 9 product of a and b is 736 division of a and b is 1 remainder when a is divided b is 9 Increment operator when applied on a results into a = 33 Decrement operator when applied on b results into b = 24
রিলেশনাল অপারেটর
শেল স্ক্রিপ্টিং-এ রিলেশনাল অপারেটর অপারেন্ডগুলোর মধ্যে সম্পর্ক ডিফাইন করে। এই গুলোর রিটার্ন ভ্যালু অপারেটর এবং অপারেন্ডের উপর নির্ভর করে true বা false হয়। শেল স্ক্রিপ্টিং-এ ৬টি বৈধ রিলেশনাল অপারেটর রয়েছে −
== অপারেটর দুটি অপারেটরের ভ্যালু ইকুয়েট করে। ভ্যালু সমান হলে true রিটার্ন করে অন্যথায় false।
!= অপারেটর দুটি অপারেটরের ভ্যালু ইকুয়েট করে এবং তাদের অসমতা চেক করে। ভ্যালু সমান না হলে true রিটার্ন করে অন্যথায় false।
< অপারেটর লেস দান অপারেটর দুটি অপারেটরের ভ্যালু কমপেয়ার করে। যদি ফার্স্ট অপারেন্ডের ভ্যালু সেকেন্ডের চেয়ে ছোট হয় তবে true রিটার্ন করে অন্যথায় false।
<= অপারেটর লেস দান অর ইকুয়াল টু অপারেটর দুটি অপারেটরের ভ্যালু কমপেয়ার করে। ফার্স্ট অপারেন্ডের ভ্যালু সেকেন্ডের চেয়ে ছোট বা সমান হলে true রিটার্ন করে অন্যথায় false।
> অপারেটর গ্রেটার দান অপারেটর দুটি অপারেটরের ভ্যালু কমপেয়ার করে। ফার্স্ট অপারেন্ডের ভ্যালু সেকেন্ডের চেয়ে বড় হলে true রিটার্ন করে অন্যথায় false।
>= অপারেটর গ্রেটার দান অর ইকুয়াল টু অপারেটর দুটি অপারেটরের ভ্যালু কমপেয়ার করে। ফার্স্ট অপারেন্ডের ভ্যালু সেকেন্ডের চেয়ে বড় বা সমান হলে true রিটার্ন করে অন্যথায় false।
উদাহরণ
a = 32
b = 67
if(( $a==$b ))
then
echo a is equal to b.
else
echo a is not equal to b.
fi
if(( $a!=$b ))
then
echo a is not equal to b.
else
echo a is equal to b.
fi
if(( $a<$b ))
then
echo a is less than b.
else
echo a is not less than b.
fi
if(( $a<=$b ))
then
echo a is less than or equal to b.
else
echo a is not less than or equal to b.
fi
if(( $a>$b ))
then
echo a is greater than b.
else
echo a is not greater than b.
fi
if(( $a>=$b ))
then
echo a is greater than or equal to b.
else
echo a is not greater than or equal to b.
fi
আউটপুট
a is not equal to b. a is not equal to b. a is less than b. a is less than or equal to b. a is not greater than b. a is not greater than or equal to b.
বুলিয়ান অপারেটর
বুলিয়ান অপারেটর যাকে লজিক্যাল অপারেটরও বলা হয়, শেল স্ক্রিপ্টিং-এ লজিক্যাল অপারেশন করার জন্য ব্যবহৃত হয়। শেল স্ক্রিপ্টিং-এ ৩টি বৈধ লজিক্যাল অপারেটর রয়েছে −
লজিক্যাল AND (&&) বুলিয়ান ভ্যালুর লজিক্যাল AND ক্যালকুলেট করে। দুটি অপারেন্ড true হলে true রিটার্ন করে অন্যথায় false।
লজিক্যাল OR (||) বুলিয়ান অপারেন্ডের লজিক্যাল OR অপারেশন ক্যালকুলেট করে। দুটি অপারেন্ড false হলে false রিটার্ন করে অন্যথায় true।
লজিক্যাল Not Equal to (!) পাস করা একক অপারেন্ডের নেগেশন ক্যালকুলেট করে। অপারেন্ডের ভ্যালু true হলে false রিটার্ন করে অন্যথায় true।
উদাহরণ
a = true
b = false
if(($a == "true" & $b == "true" ))
then
echo Both are true.
else
echo Both are not true.
fi
if(($a == "true" || $b == "true" ))
then
echo Atleast one of them is true.
else
echo None of them is true.
fi
if(( ! $a == "true" ))
then
echo "a" was intially false.
else
echo "a" was intially true.
fi
আউটপুট
Both are not true. Atleast one of them is true a was intially true.
বিটওয়াইজ অপারেটর হলো বিট ভেরিয়েবলের ওপর বিটওয়াইজ অপারেশন করার অপারেটর। শেল স্ক্রিপ্টিং-এ ৬টি বিটওয়াইজ অপারেটর রয়েছে −
বিটওয়াইজ AND (&) অপারেন্ডের বিটগুলোর ওপর বাইনারি AND অপারেশন করে অর্থাৎ ফার্স্ট ভেরিয়েবল-এর প্রতিটি বিট সেকেন্ড অপারেটর-এর রেসপেক্টিভ বিটের সাথে অপারেট হয়।
বিটওয়াইজ OR (|) অপারেন্ডের বিটগুলোর ওপর বাইনারি OR অপারেশন করে।
বিটওয়াইজ XOR (^) অপারেন্ডের বিটগুলোর ওপর বাইনারি XOR অপারেশন করে।
বিটওয়াইজ কমপ্লিমেন্ট (~) অপারেন্ডের বিটগুলোর ওপর বাইনারি NOT অপারেশন করে।
বিটওয়াইজ লেফট শিফট (<<) অপারেন্ডের বিটগুলোর বামে n টাইম শিফট করে (অপারেটরের ডানে নির্দিষ্ট)।
বিটওয়াইজ রাইট শিফট (>>) অপারেন্ডের বিটগুলোর ডানে n টাইম শিফট করে।
উদাহরণ
a = 14 b = 67 bitwiseAND=$(( a&b )) echo Bitwise AND of a and b is $bitwiseAND bitwiseOR=$(( a|b )) echo Bitwise OR of a and b is $bitwiseOR bitwiseXOR=$(( a^b )) echo Bitwise XOR of a and b is $bitwiseXOR bitiwiseComplement=$(( ~a )) echo Bitwise Compliment of a is $bitiwiseComplement leftshift=$(( a<<1 )) echo Left Shift of a is $leftshift rightshift=$(( b>>1 )) echo Right Shift of b is $rightshift
আউটপুট
Bitwise AND of a and b is 2 Bitwise OR of a and b is 79 Bitwise XOR of a and b is 77 Bitwise Compliment of a is -15 Left Shift of a is 28 Right Shift of b is 33
ফাইল টেস্ট অপারেটর
ফাইল টেস্ট অপারেটরগুলো ফাইলের নির্দিষ্ট প্রোপার্টি টেস্ট করতে ব্যবহৃত হয়। কিছু ফাইল টেস্ট অপারেটর:
-b অপারেটর চেক করে নির্দিষ্ট ফাইল ব্লক স্পেশাল ফাইল কিনা। যদি ব্লক স্পেশাল ফাইল হয় তবে true রিটার্ন করে অন্যথায় false।
-s অপারেটর দেয়া ফাইলের সাইজ চেক করে। ফাইল সাইজ ০-এর চেয়ে বড় হলে true রিটার্ন করে অন্যথায় false।
-r অপারেটর চেক করে ফাইল কন্টেন্ট রিড অ্যাক্সেস দেওয়া আছে কিনা। রিড অ্যাক্সেস থাকলে true রিটার্ন করে অন্যথায় false।
-w অপারেটর চেক করে ফাইলে রাইট অ্যাক্সেস আছে কিনা। রাইট অ্যাক্সেস থাকলে true রিটার্ন করে অন্যথায় false।
-x অপারেটর চেক করে ফাইল এক্সিকিউট অ্যাক্সেস আছে কিনা। এক্সিকিউশন অ্যাক্সেস থাকলে true রিটার্ন করে অন্যথায় false।