Daffodil International University

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

Title: বাংলায় শেল স্ক্রিপ্টিং- পর্ব ১ [প্রথম প্রোগাম/ ভেরিয়েবল ডিক্লেয়ারেশন এবং -
Post by: sanzid.swe on March 03, 2020, 11:11:31 AM
আগের লেখাতে শেল স্ক্রিপ্টিং সম্পর্কে মোটামুটি ধারণা পেয়ে গেছি সবাই, এবার আমরা এই ল্যাংগুয়েজটাকে পৃথিবীর সাথে পরিচয় করিয়ে দিব- অর্থাৎ Hellow World প্রিন্ট করে দেখবো। আগেই বলেছি কোড মূলত টেক্সট ইডিটরে লিখে সেটা শুধু টার্মিনালে কল করে এক্সিকিউট করবো। সেজন্য যেকোন ডিরেক্টরিতে গিয়ে প্রথমে একটা টেক্সট ফাইল তৈরি করে নিতে হবে। আমরা টেক্সট ফাইল টার্মিনালের মাধ্যমে অথবা ম্যানুয়ালি যেকোনভাবেই তৈরি করে নিতে পারি… (টার্মিনালে ফাইল তৈরি এবং ইডিট করার বিস্তারিত জানতে এখানে দেখুন)। মনে করি practice1 নামে একটা টেক্সট ফাইল বানিয়েছি আমরা।

প্রথম প্রোগ্রাম
Bash শেলে কোনকিছু প্রিন্ট করে দেখাতে echo লাইব্রেরী ইউজ করা হয়, অর্থাৎ আমরা আমাদের বানানো টেক্সট ফাইলটি ওপেন করে লিখবো-

echo Hellow World!
1
echo Hellow World!
এবং সেভ দিয়ে বের হয়ে আসবো।

আমরা যে ডিরেক্টরিতে টেক্সট ফাইলটি তৈরি করেছি সেখানে ডান বাটন ক্লিক করে টার্মিনাল ওপেন করবো এবং টেক্সট ফাইলটি কল করে প্রোগ্রাম রান করাবো। টার্মিনাল থেকে প্রোগ্রাম রান করতে ./fileName ইউজ করতে হয়। তাহলে আমরা আমাদের ফাইলটি রান করতে লিখবো-

sanzid@HP-240-G4:~$ ./practice1
1
sanzid@HP-240-G4:~$ ./practice1
এটা লিখে এন্টার চাপলে “Permission denied” নামে একটা এরর আসবে। কারন যে ফাইলটি তৈরি করেছি সেটি ডিফল্টভাবে সকল ইউজারদের একসেস পারমিশন দেয়নি।

এই এরর ফিক্স করার জন্য আমরা টার্মিনালে লিখি-

sanzid@HP-240-G4:~$ chmod 755 practice1
1
sanzid@HP-240-G4:~$ chmod 755 practice1
এবং ফাইলটি আবার রান করি-

sanzid@HP-240-G4:~$ ./practice1
1
sanzid@HP-240-G4:~$ ./practice1
এবার তাহলে দেখবো আমাদের টেক্সট ইডিটরে লেখা Hellow World! লেখাটি টার্মিনালে শো করবে। এভাবে আমরা echo লাইব্রেরী ইউজ করে যেকোনকিছু প্রিন্ট করতে পারি।

এবার টার্মিনালে কমান্ডগুলো দিয়ে নিজে ট্রাই করে দেখুন-
echo "Hello World" #This is a comment!
echo "Hello World"
echo "Hello * World"
echo Hello * World
echo Hello World
echo "Hello" World
echo Hello " " World
echo "Hello "*" World"
echo `hello` world
echo 'hello' world
1
2
3
4
5
6
7
8
9
10
echo "Hello World" #This is a comment!
echo "Hello World"
echo "Hello * World"
echo Hello * World
echo Hello World
echo "Hello" World
echo Hello " " World
echo "Hello "*" World"
echo `hello` world
echo 'hello' world
আশা করি আউটপুট দেখে প্রিন্ট করার ব্যাপারটা ক্লিয়ারলি বুঝতে পেরেছেন।

 

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

a=12
b=13
echo $a
12
echo $(($a+$b))
25
1
2
3
4
5
6
a=12
b=13
echo $a
12
echo $(($a+$b))
25
(এই প্রগ্রামগুলো প্রাকটিস করার জন্য আমরা সরাসরি টার্মিনালেই কোড লিখবো, এবং এন্টার প্রেস করে রান করে ফলাফল দেখবো)।

এখানে প্রথমে আমরা a এবং b নামে দুইটা ভেরিয়েবল ডিক্লেয়ার করেছি। খেয়াল রাখতে হবে, যেন মাঝে কোন স্পেস না দেয়া হয়।
এরপর a এর ভেলু প্রিন্ট করেছি। অর্থাৎ বুঝতে পারছি কোন ভেরিয়েবলের ভেলু কোথাও দেখাতে হলে ভেরিয়েবলের নামের আগে $(ডলার) সাইন ইউজ করতে হয়।
৫ নাম্বার লাইনে আমরা a এবং b ভেরিয়েবলের যোগফল প্রিন্ট করে সেটার ফলাফল পেয়েছি, অর্থাৎ এভাবে কোন এরিথমেটিক অপারেশন করতে হলে $(()) ফাংশন ইউজ করে এই ফাংশনের মধ্যে যেকোন ভেরিয়েবলের এরিথমেটিক অপারেশন প্রিন্ট করতে পারি।
কিন্তু আমরা যদি চাই ভেরিয়েবলগুলোর যোগফল বা এরিথমেটিক অপারেশন করে যা হয় তা অন্য একটি ভেরিয়েবলের মধ্যে রাখতে?? ওকে, টার্মিনালে আমরা নিচের মতো প্রোগ্রাম লিখে ফেলি-

a=12
b=13
c=$(($a+$b))
echo $c
25
1
2
3
4
5
a=12
b=13
c=$(($a+$b))
echo $c
25
৩ নাম্বার লাইনে আমরা দেখতে পাচ্ছি a এবং b এর যোগফল c ভেরিয়েবলে এসাইন করেছি এবং echo $c কমান্ড দেয়ায় দুটির যোগফলের মান বা c এর ভেলু প্রিন্ট করে দেখিয়েছে।
 

আবার নিচের কোডে-

x="hello"
expr $x + 1
expr: non-numeric argument
1
2
3
x="hello"
expr $x + 1
expr: non-numeric argument
এখানে ১ নাম্বার লাইনে ভেরিয়েবলের মধ্যে একটি স্ট্রিং রেখেছি এবং ২ নাম্বার লাইনে expr কী-ওয়ার্ড দিয়ে 1 এর সাথে এরিথমেটিক অপারেশন করেছি।
৩ নাম্বার লাইনে দেখতে পাচ্ছি এরর দেখে দিচ্ছে, কেননা আমরা স্ট্রিং এর সাথে একটা ইন্টেজার নাম্বার যোগ করেছি।
এখানে আরও বুঝতে পারলাম expr কী-ওয়ার্ড ইউজ করেও এভাবে এরিথমেটিক অপারেশন করতে পারি।
এবার টার্মিনালে কমান্ডগুলো দিয়ে নিজে ট্রাই করে দেখুন-
Shell
MY_MESSAGE="Hello World"
MY_SHORT_MESSAGE=hi
MY_NUMBER=1
MY_PI=3.142
MY_OTHER_PI="3.142"
MY_MIXED=123abc
1
2
3
4
5
6
MY_MESSAGE="Hello World"
MY_SHORT_MESSAGE=hi
MY_NUMBER=1
MY_PI=3.142
MY_OTHER_PI="3.142"
MY_MIXED=123abc


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