গানিতিক এক্সপ্যানসন

Last updated 6 months ago

এপর্যায়ে আমরা শেলের গানিতিক এক্সপ্যানসন(Arithmatic expansion) এর ব্যাপারে জানবো। ওয়াইল্ডকার্ড ব্যবহার করলে শেল যেমন আগে তাকে পাথনেম হিসেবে এক্সপ্যান্ড করে তেমনি বিশেষ উপায়ে যদি গানিতিক এক্সপ্রেশন লেখা হয় তাহলে শেল সেটার উত্তর হিসেব করে দিতে পারে। বিশেষ উপায় বলতে এমনভাবে লেখা যেন শেল বুঝতে পারে আমরা চাইছি সে হিসেব করুক। এই এক্সপ্রেশন এর কাঠামো হবে $((expression))। অর্থাৎ এক্সপ্রেশনের জায়গায় আমাদের দেয়া অংকটি আর তাকে ঘিরে দিতে হবে দুই দফা ব্রাকেট দিয়ে আর সামনে থাকবে একটি ডলার($) চিহ্ন। একটা উদাহরণ দেখা যাক:

me@howtocode-pc:~$ echo $((2 + 2))
4

আমাদের মূল অংক ছিল দুই আর দুই এর যোগফল বের করা। সুতরাং এক্সপ্রেশনটি হল: 2 + 2। আমরা শেলকে অংকটি করার নির্দেশ দিয়েছি এটাকে বিশেষ কাঠামোতে লিখে। অর্থাৎ $((2 + 2)) লিখে। ফলে শেল অংকটি করে উত্তর বের করেছে 4 এবং এটাককেই echo কমান্ডের আর্গুমেন্ট হিসেবে পাঠিয়েছে। ফলে echo উত্তরটা প্রিন্ট করেছে।

একটা বিষয় মাথায় রাখতে হবে। শেলের গানিতিক এক্সপ্যানসন খুবই সীমাবদ্ধ। এটা সবসময় পূর্ণসংখ্যা নিয়ে কাজ করবে। কখনোই দশমিক ভগ্নাংশ নিয়ে এটি কাজ করতে পারে না।

এবার দেখা যাক কোন গাণিতিক চিহ্নগুলো আমরা ব্যবহার করতে পারবো:

চিহ্ন

অর্থ

+

যোগ

-

বিয়োগ

*

গুন

/

ভাগ(লক্ষ্যণীয়, ভাগফল শুধু পূর্ণসংখ্যায় দেখানো হবে)

%

ভাগশেষ (ইংরেজিতে Remainder, পোশাকি নাম মড্যুলো(Modulo))

**

ঘাত(চলতিভাষায় আমরা পাওয়ার বলি। এক্সপোনেনশিয়েশন(Exponentiation) ও বলতে পারেন।)

একাধিক সরল এক্সপ্রেশন দিয়ে আপনি যৌগিক বা নেস্টেড এক্সপ্রেশন তৈরি করতে পারেন। ৫ এর দ্বিতীয় ঘাত( 5 square) কে ৩ দিয়ে গুন করতে হলে আমরা লিখবো:

me@howtocode-pc:~$ echo $(($((5**2)) * 3))
75

এবার ভাগের ব্যাপারে দেখি। ভাগসংক্রান্ত গানিতিক চিহ্ন বা অপারেটরদ্বয় হলো '/' ও '%'। আমরা ৫কে ২দিয়ে ভাগ করবো দুটো দিয়েই:

me@howtocode-pc:~$ echo $((5/2))
2
me@howtocode-pc:~$ echo $((5%2))
1

প্রথমে আমরা '/' দিয়ে ভাগ করেছি। আসলে উত্তর হওয়া উচিৎ 2.5 কিন্তু পূর্ণসংখ্যাই শুধু বিবেচ্য বলে 2 দেখিয়েছে। আর পরেরটা দেখিয়েছে ভাগশেষ।