শেল স্ক্রিপ্ট কী এবং এর ব্যবহার
শেল স্ক্রিপ্ট হল একটি প্রোগ্রাম বা কোডের একটি সিরিজ, যা শেল (Unix, Linux, বা অন্য কোন কমান্ড লাইন ইন্টারফেস) দ্বারা এক্সিকিউট করা হয়। এটি একটি সাধারণ টেক্সট ফাইল যা শেল কমান্ডগুলো একের পর এক লিখে রাখা হয়, যাতে একে একে বা স্বয়ংক্রিয়ভাবে কাজ করা যায়। শেল স্ক্রিপ্ট সাধারণত .sh এক্সটেনশন সহ থাকে, তবে অন্যান্য শেলের জন্য এটি ভিন্ন হতে পারে, যেমন bash স্ক্রিপ্টের জন্য .bash।
শেল স্ক্রিপ্ট ব্যবহারকারীদের একটি নির্দিষ্ট কাজ বা সিরিজের কাজ স্বয়ংক্রিয়ভাবে সম্পাদন করার সুবিধা দেয়, যাতে একাধিক কমান্ড ম্যানুয়ালি রান করার পরিবর্তে এগুলো একটি ফাইলের মধ্যে লিখে রাখা যায়।
শেল স্ক্রিপ্টের বৈশিষ্ট্য
- টেক্সট ফাইল: শেল স্ক্রিপ্ট সাধারণত একটি সাধারণ টেক্সট ফাইল, যা শেল কমান্ড, শর্তাবলী, লুপ, ফাংশন এবং অন্যান্য প্রোগ্রামিং কন্সট্রাক্ট ধারণ করে।
- স্বয়ংক্রিয় কার্যক্রম: এটি এমন কাজ করতে সাহায্য করে, যেগুলো একাধিক কমান্ডের মাধ্যমে করতে হয়, যেমন ব্যাকআপ নেওয়া, ফাইল পরিচালনা, সিস্টেম কনফিগারেশন ইত্যাদি।
- বিভিন্ন শেল ব্যবহার করা যায়: শেল স্ক্রিপ্ট বিভিন্ন শেল (bash, zsh, ksh ইত্যাদি) ব্যবহার করতে পারে, তবে bash (Bourne Again Shell) সবচেয়ে জনপ্রিয় শেল স্ক্রিপ্টিং ভাষা।
শেল স্ক্রিপ্ট কীভাবে কাজ করে?
শেল স্ক্রিপ্ট রান করার জন্য প্রথমে স্ক্রিপ্ট ফাইলটি executable হিসেবে সেট করতে হয়, এবং তারপর এটি শেল বা কনসোল থেকে রান করা হয়।
শেল স্ক্রিপ্ট রান করার ধাপ:
- স্ক্রিপ্ট ফাইল তৈরি করা: প্রথমে একটি টেক্সট ফাইল তৈরি করুন এবং স্ক্রিপ্টের কোড লিখুন।
- উদাহরণ:
myscript.sh
- উদাহরণ:
- ফাইলের এক্সিকিউটেবল অনুমতি দেওয়া: স্ক্রিপ্ট ফাইলটি এক্সিকিউটেবল করতে
chmodকমান্ড ব্যবহার করুন।- কমান্ড:
chmod +x myscript.sh
- কমান্ড:
- স্ক্রিপ্ট চালানো: স্ক্রিপ্টটি চালানোর জন্য শেল কমান্ড ব্যবহার করুন।
- কমান্ড:
./myscript.sh
- কমান্ড:
শেল স্ক্রিপ্টে ব্যবহৃত কিছু সাধারণ কমান্ড
echo: এটি টেক্সট বা আউটপুট প্রদর্শন করতে ব্যবহৃত হয়।- উদাহরণ:
echo "Hello, World!"→ এটি "Hello, World!" প্রদর্শন করবে।
- উদাহরণ:
if-else: শর্তাধীন লজিক প্রয়োগের জন্য ব্যবহৃত হয়।উদাহরণ:
if [ $age -ge 18 ] then echo "You are an adult." else echo "You are not an adult." fi
forলুপ: একাধিক কাজ বা অপারেশন পুনরায় চালানোর জন্য ব্যবহৃত হয়।উদাহরণ:
for i in 1 2 3 4 5 do echo "Number: $i" done
whileলুপ: নির্দিষ্ট শর্তে লুপ চালানোর জন্য ব্যবহৃত হয়।উদাহরণ:
counter=1 while [ $counter -le 5 ] do echo "Counter: $counter" ((counter++)) done
read: ব্যবহারকারীর ইনপুট গ্রহণ করার জন্য ব্যবহৃত হয়।উদাহরণ:
echo "Enter your name: " read name echo "Hello, $name!"
শেল স্ক্রিপ্টের ব্যবহার
শেল স্ক্রিপ্ট ব্যবহার করার বিভিন্ন কারণ থাকতে পারে, যেমন:
- স্বয়ংক্রিয়করণ (Automation):
- একাধিক কমান্ড একসাথে চালাতে এবং জটিল কাজগুলোকে স্বয়ংক্রিয়ভাবে পরিচালনা করতে শেল স্ক্রিপ্ট খুবই কার্যকর।
- উদাহরণ: প্রতিদিন রাত ১২টায় সার্ভারের ব্যাকআপ নেয়ার জন্য একটি শেল স্ক্রিপ্ট তৈরি করা।
- ফাইল এবং ডিরেক্টরি পরিচালনা:
- শেল স্ক্রিপ্টের মাধ্যমে ফাইল কপি, মুভ, ডিলিট, রিনেম বা ডিরেক্টরি তৈরি করা সহজ হয়ে যায়।
- উদাহরণ: একটি স্ক্রিপ্ট ব্যবহার করে একাধিক ফাইলকে একটি নির্দিষ্ট ডিরেক্টরিতে স্থানান্তর করা।
- সিস্টেম কনফিগারেশন:
- সার্ভার বা ডিভাইস কনফিগারেশনের জন্য শেল স্ক্রিপ্ট ব্যবহৃত হয়, যেমন সিস্টেম সেটিংস আপডেট করা, সফটওয়্যার ইনস্টল করা ইত্যাদি।
- উদাহরণ: একটি স্ক্রিপ্ট ব্যবহার করে সার্ভারে সমস্ত আপডেট ইনস্টল করা।
- টাস্ক সিডিউলিং:
- শেল স্ক্রিপ্টে কাজটি নির্দিষ্ট সময় অনুযায়ী চালানোর জন্য cron jobs এর সাথে ব্যবহৃত হয়।
- উদাহরণ: নিয়মিত ডেটা ব্যাকআপ করার জন্য একটি স্ক্রিপ্ট নির্দিষ্ট সময় অন্তর চালানো।
- সার্ভার ম্যানেজমেন্ট:
- বিভিন্ন সার্ভার ম্যানেজমেন্ট কাজ যেমন লগ ফাইল ম্যানেজমেন্ট, সিস্টেম মনিটরিং এবং নির্দিষ্ট অ্যাপ্লিকেশন পরিচালনা করতে শেল স্ক্রিপ্ট ব্যবহার করা হয়।
শেল স্ক্রিপ্টের উদাহরণ
একটি সহজ শেল স্ক্রিপ্ট উদাহরণ:
#!/bin/bash
# এই স্ক্রিপ্টটি ব্যবহারকারীর নাম প্রিন্ট করবে
echo "Enter your name: "
read name
echo "Hello, $name! Welcome to the shell scripting world."ব্যাখ্যা:
#!/bin/bash- এটি স্ক্রিপ্টের প্রথম লাইনেbashশেল ব্যবহার করার জন্য নির্দেশ দেয়।echo- ব্যবহারকারীর জন্য টেক্সট প্রদর্শন করে।read- ব্যবহারকারীর ইনপুট নেয়।
সারসংক্ষেপ
শেল স্ক্রিপ্ট হল একটি শক্তিশালী এবং বহুমুখী উপায়, যা কম্পিউটারে একাধিক কাজ বা প্রক্রিয়া স্বয়ংক্রিয়ভাবে সম্পাদন করার জন্য ব্যবহৃত হয়। এটি সিস্টেম প্রশাসন, ফাইল ম্যানেজমেন্ট, এবং অন্যান্য সাধারণ কমান্ড এক্সিকিউট করতে অত্যন্ত কার্যকর। শেল স্ক্রিপ্টের মাধ্যমে কাজগুলো দ্রুত, দক্ষ এবং স্বয়ংক্রিয়ভাবে করা যায়।
স্ক্রিপ্ট তৈরি এবং রান করা
UNIX এবং LINUX সিস্টেমে স্ক্রিপ্ট তৈরি এবং রান করার প্রক্রিয়া একটি গুরুত্বপূর্ণ অংশ, কারণ এটি সিস্টেম অটোমেশন, রক্ষণাবেক্ষণ, এবং অন্যান্য টাস্কগুলো স্বয়ংক্রিয়ভাবে সম্পাদন করতে সহায়ক। স্ক্রিপ্ট সাধারণত Bash (Bourne Again Shell) বা অন্যান্য শেলের ভাষায় লেখা হয়। এখানে স্ক্রিপ্ট তৈরি এবং রান করার প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করা হলো।
১. স্ক্রিপ্ট তৈরি
স্ক্রিপ্ট তৈরি করতে সাধারণত একটি টেক্সট এডিটর যেমন Vim, Nano, Gedit, বা vi ব্যবহার করা হয়। Bash স্ক্রিপ্ট সবচেয়ে জনপ্রিয় এবং সহজ ভাষাগুলোর মধ্যে একটি।
স্ক্রিপ্ট লেখার পদক্ষেপ:
ফাইল তৈরি:
প্রথমে একটি নতুন ফাইল তৈরি করুন যেখানে আপনি স্ক্রিপ্ট কোড লিখবেন।nano myscript.shএখানে
nanoহল একটি টেক্সট এডিটর, এবংmyscript.shহল স্ক্রিপ্টের ফাইল নাম। আপনি চাইলে অন্য নামও দিতে পারেন।শেবাং (Shebang):
স্ক্রিপ্ট ফাইলের প্রথম লাইনে শেবাং (shebang) চিহ্নিত করতে হবে, যা শেল প্রোগ্রামকে নির্দেশ দেয় যে এটি কোন ধরনের স্ক্রিপ্ট। Bash স্ক্রিপ্টের জন্য শেবাং হল:#!/bin/bashএটি শেলের অবস্থান নির্দেশ করে, যাতে সিস্টেম জানে কোন শেলে স্ক্রিপ্টটি রান হবে।
স্ক্রিপ্ট কোড:
এরপর স্ক্রিপ্টে আপনি যে কমান্ডগুলি রান করতে চান তা লিখুন। উদাহরণস্বরূপ, একটি স্ক্রিপ্ট যা আপনাকে "Hello, World!" প্রিন্ট করবে:#!/bin/bash echo "Hello, World!"- ফাইল সেভ করুন এবং বন্ধ করুন:
nanoব্যবহার করলেCtrl + Xচাপুন, তারপরYপ্রেস করে সেভ করুন এবংEnterচাপুন।viব্যবহার করলে:wqটিপে সেভ করুন এবং বেরিয়ে আসুন।
২. স্ক্রিপ্ট রান করা
স্ক্রিপ্ট রান করার জন্য, প্রথমে স্ক্রিপ্টকে এক্সিকিউটেবল (executable) করতে হবে, এবং তারপর রান করতে হবে।
১. স্ক্রিপ্টকে এক্সিকিউটেবল (Executable) বানানো
স্ক্রিপ্টটি রান করার জন্য, আপনি স্ক্রিপ্ট ফাইলটিকে এক্সিকিউটেবল পারমিশন দিতে হবে।
chmod +x myscript.shএটি স্ক্রিপ্ট ফাইল myscript.sh-কে এক্সিকিউটেবল বানিয়ে দেবে, অর্থাৎ আপনি এটি রান করতে পারবেন।
২. স্ক্রিপ্ট রান করা
স্ক্রিপ্ট রান করতে, স্ক্রিপ্টের ফাইল পাথ সহ তার নাম লিখে রান করুন:
ডিরেক্টরিতে থেকেই রান করা:
যদি স্ক্রিপ্ট ফাইলটি বর্তমান ডিরেক্টরিতে থাকে, তবে নিম্নলিখিত কমান্ড ব্যবহার করুন:./myscript.shএখানে
./নির্দেশ করে যে স্ক্রিপ্টটি বর্তমান ডিরেক্টরিতে রয়েছে এবং সেখান থেকেই রান হবে।অন্য ডিরেক্টরি থেকে রান করা:
যদি স্ক্রিপ্টটি অন্য কোনো ডিরেক্টরিতে থাকে, তবে স্ক্রিপ্টের পুরো পাথ দিয়ে রান করুন:/path/to/myscript.shযেখানে
/path/to/হল আপনার স্ক্রিপ্টের সঠিক পাথ।
৩. স্ক্রিপ্টে ভেরিয়েবল ব্যবহার
স্ক্রিপ্টে ভেরিয়েবল ব্যবহার করতে পারেন যেগুলি স্ক্রিপ্ট চলাকালীন ডাইনামিকভাবে মান গ্রহণ করে।
উদাহরণ:
#!/bin/bash
# A script to greet the user
echo "Enter your name:"
read name
echo "Hello, $name!"এই স্ক্রিপ্টটি ব্যবহারকারীর নাম নিতে এবং তাকে স্বাগত জানাতে একটি ভেরিয়েবল ব্যবহার করে।
৪. স্ক্রিপ্টে কন্ডিশনাল এবং লুপ ব্যবহার
স্ক্রিপ্টে কন্ডিশনাল (if-else) এবং লুপ (for, while) ব্যবহার করে আরও জটিল কাজ করা সম্ভব।
উদাহরণ - If-Else:
#!/bin/bash
# A script to check if a file exists
echo "Enter a filename:"
read filename
if [ -e $filename ]
then
echo "The file $filename exists."
else
echo "The file $filename does not exist."
fiউদাহরণ - Loop:
#!/bin/bash
# A script to print numbers from 1 to 5
for i in {1..5}
do
echo "Number $i"
done৫. স্ক্রিপ্টে ফাংশন ব্যবহার
ফাংশন ব্যবহার করে আপনি কোড পুনঃব্যবহারযোগ্য করতে পারেন।
উদাহরণ:
#!/bin/bash
# A script with a function
greet() {
echo "Hello, $1!"
}
greet "Alice"
greet "Bob"এই স্ক্রিপ্টটি দুটি ভিন্ন ভ্যালু পাস করে greet ফাংশনকে কল করবে এবং প্রতিবার একটি ভিন্ন বার্তা প্রিন্ট করবে।
সারসংক্ষেপ
- স্ক্রিপ্ট তৈরি: স্ক্রিপ্ট তৈরি করতে একটি টেক্সট এডিটর (যেমন
nanoবাvi) ব্যবহার করুন এবং শেবাং দিয়ে শুরু করুন, এরপর কমান্ড লিখুন। - এক্সিকিউটেবল পারমিশন: স্ক্রিপ্ট রান করার জন্য স্ক্রিপ্টে এক্সিকিউটেবল পারমিশন দিতে হবে (
chmod +x script.sh)। - স্ক্রিপ্ট রান: স্ক্রিপ্ট রান করতে
./script.shকমান্ড ব্যবহার করুন (যদি স্ক্রিপ্ট বর্তমান ডিরেক্টরিতে থাকে)। - ভেরিয়েবল, কন্ডিশনাল, লুপ, ফাংশন: স্ক্রিপ্টে ভেরিয়েবল, কন্ডিশনাল স্টেটমেন্ট এবং লুপ ব্যবহার করে কোড আরও শক্তিশালী এবং ডাইনামিক করা যায়।
এটি UNIX/LINUX সিস্টেমে স্ক্রিপ্ট তৈরি ও রান করার একটি মৌলিক ধারণা।
ভেরিয়েবল, লুপ এবং কন্ডিশনাল স্টেটমেন্ট
প্রোগ্রামিংয়ের মৌলিক ধারণাগুলোর মধ্যে ভেরিয়েবল, লুপ এবং কন্ডিশনাল স্টেটমেন্ট গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলি প্রতিটি প্রোগ্রামে নিয়ন্ত্রণ এবং সিদ্ধান্ত গ্রহণের জন্য ব্যবহৃত হয়। এখানে আমরা UNIX এবং LINUX স্ক্রিপ্টিং বা সাধারণভাবে প্রোগ্রামিং ভাষায় এই তিনটি বিষয়ের ব্যাখ্যা করব।
১. ভেরিয়েবল (Variables)
ভেরিয়েবল হলো একটি নাম যা ডেটার একটি নির্দিষ্ট মানকে ধারণ করে। প্রোগ্রামে ডেটা সংরক্ষণ এবং পুনরায় ব্যবহার করার জন্য ভেরিয়েবল ব্যবহৃত হয়।
সিনট্যাক্স:
variable_name=valueকমান্ড উদাহরণ:
একটি ভেরিয়েবল তৈরি করা এবং মান নির্ধারণ:
name="John"এখানে,
nameহল ভেরিয়েবল এবং"John"হল তার মান।ভেরিয়েবল মান প্রিন্ট করা (bash স্ক্রিপ্টে):
echo $name
ভেরিয়েবলের কিছু বৈশিষ্ট্য:
- ভেরিয়েবলের নাম সাধারণত ইংরেজি অক্ষর, সংখ্যা এবং আন্ডারস্কোর দিয়ে গঠিত।
- ভেরিয়েবল ব্যবহার করার সময় তার মান
$সাইন দিয়ে উল্লেখ করা হয় (যেমন$name)।
২. লুপ (Loops)
লুপ এমন একটি কাঠামো যা নির্দিষ্ট শর্ত পূর্ণ না হওয়া পর্যন্ত বা একটি নির্দিষ্ট সংখ্যক বার একটি কাজ পুনরায় সম্পাদন করে। লুপের প্রধান ধরনের মধ্যে for, while, এবং until লুপ রয়েছে।
for লুপ:
for লুপ ব্যবহার করে একটি নির্দিষ্ট পরিসরে কাজ করা হয়।
সিনট্যাক্স:
for variable in [list]
do
command(s)
doneকমান্ড উদাহরণ:
for i in 1 2 3 4 5
do
echo "Number: $i"
doneএই লুপটি ১ থেকে ৫ পর্যন্ত সংখ্যাগুলি প্রিন্ট করবে।
while লুপ:
while লুপটি একটি শর্ত পূর্ণ না হওয়া পর্যন্ত চলতে থাকে।
সিনট্যাক্স:
while [condition]
do
command(s)
doneকমান্ড উদাহরণ:
count=1
while [ $count -le 5 ]
do
echo "Count: $count"
((count++))
doneএটি ১ থেকে ৫ পর্যন্ত সংখ্যা প্রিন্ট করবে।
until লুপ:
until লুপটি while এর বিপরীত কাজ করে। এটি তখন পর্যন্ত চলে যতক্ষণ না শর্ত পূর্ণ হয়।
সিনট্যাক্স:
until [condition]
do
command(s)
doneকমান্ড উদাহরণ:
count=1
until [ $count -gt 5 ]
do
echo "Count: $count"
((count++))
doneএটি ১ থেকে ৫ পর্যন্ত সংখ্যা প্রিন্ট করবে, যেমনটি while লুপের উদাহরণে দেখানো হয়েছে।
৩. কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)
কন্ডিশনাল স্টেটমেন্ট ব্যবহার করা হয় যাতে প্রোগ্রাম বিভিন্ন শর্তের ভিত্তিতে আলাদা আলাদা কাজ করতে পারে। if, elif, else এবং case হল সাধারণ কন্ডিশনাল স্টেটমেন্ট।
if স্টেটমেন্ট:
if স্টেটমেন্ট একটি শর্ত পরীক্ষা করে এবং শর্ত সত্য হলে একটি কমান্ড বা ব্লক চালানো হয়।
সিনট্যাক্স:
if [condition]
then
command(s)
fiকমান্ড উদাহরণ:
if [ $age -ge 18 ]
then
echo "You are an adult."
fiএটি age ভেরিয়েবলটি ১৮ বা তার বেশি হলে "You are an adult." প্রিন্ট করবে।
if-else স্টেটমেন্ট:
if-else স্টেটমেন্ট শর্ত পূর্ণ হলে একটি কাজ এবং শর্ত পূর্ণ না হলে অন্য কাজ করতে ব্যবহৃত হয়।
সিনট্যাক্স:
if [condition]
then
command(s)
else
command(s)
fiকমান্ড উদাহরণ:
if [ $age -ge 18 ]
then
echo "You are an adult."
else
echo "You are a minor."
fiএটি age ভেরিয়েবলটি ১৮ বা তার বেশি হলে "You are an adult." প্রিন্ট করবে, অন্যথায় "You are a minor." প্রিন্ট করবে।
elif (else if):
elif (else if) ব্যবহার করে একাধিক শর্ত পরীক্ষা করা হয়।
সিনট্যাক্স:
if [condition1]
then
command(s)
elif [condition2]
then
command(s)
else
command(s)
fiকমান্ড উদাহরণ:
if [ $age -ge 18 ]
then
echo "You are an adult."
elif [ $age -ge 13 ]
then
echo "You are a teenager."
else
echo "You are a child."
fiএটি age অনুসারে ভিন্ন ভিন্ন বার্তা প্রিন্ট করবে।
case স্টেটমেন্ট:
case স্টেটমেন্ট একাধিক শর্ত পরীক্ষার জন্য ব্যবহৃত হয়, যা কন্ডিশনাল লজিকের জন্য শক্তিশালী বিকল্প।
সিনট্যাক্স:
case $variable in
pattern1)
command(s)
;;
pattern2)
command(s)
;;
*)
default_command
;;
esacকমান্ড উদাহরণ:
echo "Enter a number between 1 and 3"
read number
case $number in
1)
echo "You chose one."
;;
2)
echo "You chose two."
;;
3)
echo "You chose three."
;;
*)
echo "Invalid choice."
;;
esacএটি ব্যবহারকারীর ইনপুট অনুযায়ী একটি নির্দিষ্ট বার্তা প্রিন্ট করবে।
সারসংক্ষেপ
- ভেরিয়েবল: ডেটার একটি নাম যা প্রোগ্রামে মান ধারণ করে এবং পুনরায় ব্যবহার করা যায়।
- লুপ: নির্দিষ্ট শর্তে বা নির্দিষ্ট সংখ্যক বার একটি কাজ পুনরায় করা হয়। প্রধান ধরনের লুপ হল
for,while, এবংuntil। - কন্ডিশনাল স্টেটমেন্ট: প্রোগ্রামের শর্ত অনুসারে বিভিন্ন কাজ সম্পাদন করা হয়। প্রধান কন্ডিশনাল স্টেটমেন্টগুলো হল
if,else,elif, এবংcase।
এই তিনটি বৈশিষ্ট্য প্রোগ্রামিং ভাষায় নিয়ন্ত্রণের জন্য অপরিহার্য উপাদান, যা আপনাকে লজিক্যালভাবে কাজ করতে সাহায্য করে।
ভেরিয়েবল, লুপ এবং কন্ডিশনাল স্টেটমেন্ট
ভেরিয়েবল, লুপ এবং কন্ডিশনাল স্টেটমেন্ট হল প্রোগ্রামিংয়ের মৌলিক ধারণা, যা প্রোগ্রামের নিয়ন্ত্রণ প্রবাহ এবং তথ্য সংরক্ষণে গুরুত্বপূর্ণ ভূমিকা পালন করে। এই ধারণাগুলি সব ধরনের প্রোগ্রামিং ভাষায় ব্যবহৃত হয়, এবং প্রতিটি প্রোগ্রামারের জন্য এগুলি জানা অত্যন্ত জরুরি।
১. ভেরিয়েবল (Variables)
ভেরিয়েবল হল একটি ডেটা স্টোরেজ ইউনিট যা একটি নির্দিষ্ট নাম দ্বারা পরিচিত। এটি বিভিন্ন ডেটা ধারণ করতে পারে, যেমন সংখ্যার মান, স্ট্রিং, বা অন্যান্য তথ্য। প্রোগ্রামিং ভাষার মাধ্যমে ভেরিয়েবল তৈরি ও ব্যবহৃত হয়।
ভেরিয়েবলের উদ্দেশ্য:
- ডেটা সংরক্ষণ করা যাতে পরবর্তী সময়ে তার মান পরিবর্তন বা ব্যবহার করা যায়।
- একটি নামের মাধ্যমে ডেটাকে অ্যাক্সেস করা।
ভেরিয়েবল তৈরি:
- প্রোগ্রামিং ভাষার উপর নির্ভর করে, ভেরিয়েবলটি সাধারণত কোনো ডেটা টাইপের দ্বারা নির্ধারিত হয়, যেমন ইনটিজার (integer), ফ্লোট (float), স্ট্রিং (string) ইত্যাদি।
উদাহরণ (Python):
x = 5 # ইনটিজার টাইপের ভেরিয়েবল
name = "John" # স্ট্রিং টাইপের ভেরিয়েবলউদাহরণ (C):
int x = 5; // ইনটিজার টাইপের ভেরিয়েবল
char name[] = "John"; // স্ট্রিং টাইপের ভেরিয়েবল২. লুপ (Loops)
লুপ হল একটি কোডের অংশ যা বারবার নির্দিষ্ট সংখ্যক বা শর্তাধীনভাবে পুনরাবৃত্তি হয়। লুপের মাধ্যমে কোডের নির্দিষ্ট অংশ একাধিক বার চলতে পারে, যা কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বাড়ায়।
লুপের প্রধান ধরনের মধ্যে রয়েছে:
forলুপ: নির্দিষ্ট সংখ্যা বা সীমার মধ্যে পুনরাবৃত্তি হয়।whileলুপ: শর্ত মেনে চলতে থাকে যতক্ষণ না তা মিথ্যা হয়।do-whileলুপ: একবার কোড চালানোর পর শর্ত পরীক্ষা করে, আর শর্ত মেনে চলতে থাকে।
for লুপ (Python উদাহরণ):
for i in range(5): # 0 থেকে 4 পর্যন্ত চলবে
print(i)এখানে, range(5) ফাংশনটি ৫টি মান (0 থেকে 4) তৈরি করে, এবং লুপটি ৫ বার চলবে।
while লুপ (Python উদাহরণ):
i = 0
while i < 5: # শর্ত: i < 5
print(i)
i += 1এই লুপটি চলবে যতক্ষণ না i ৫ এর সমান বা বড় হবে।
for লুপ (C উদাহরণ):
for(int i = 0; i < 5; i++) {
printf("%d\n", i);
}while লুপ (C উদাহরণ):
int i = 0;
while(i < 5) {
printf("%d\n", i);
i++;
}৩. কন্ডিশনাল স্টেটমেন্ট (Conditional Statements)
কন্ডিশনাল স্টেটমেন্ট হল এমন কোডের অংশ যা শর্তের ভিত্তিতে সিদ্ধান্ত নেয়। কন্ডিশনাল স্টেটমেন্টের মাধ্যমে প্রোগ্রামটি বিভিন্ন শর্তের উপর ভিত্তি করে আলাদা আলাদা পথ অনুসরণ করতে পারে।
প্রধান কন্ডিশনাল স্টেটমেন্ট:
if: যদি শর্ত সত্য হয়, তবে কোডের নির্দিষ্ট অংশ চালানো হয়।else:ifশর্ত মিথ্যা হলেelseকোডটি চালানো হয়।elif(Python-এর জন্য): একাধিক শর্ত পরীক্ষা করতে ব্যবহৃত হয়।
if স্টেটমেন্ট (Python উদাহরণ):
x = 10
if x > 5:
print("x is greater than 5")এখানে, x যদি ৫ এর বেশি হয়, তবে "x is greater than 5" মুদ্রণ হবে।
if-else স্টেটমেন্ট (Python উদাহরণ):
x = 3
if x > 5:
print("x is greater than 5")
else:
print("x is not greater than 5")এখানে, যেহেতু x ৫ এর চেয়ে ছোট, তাই "x is not greater than 5" মুদ্রণ হবে।
if-elif-else স্টেটমেন্ট (Python উদাহরণ):
x = 7
if x > 10:
print("x is greater than 10")
elif x > 5:
print("x is greater than 5 but less than or equal to 10")
else:
print("x is 5 or less")এখানে, প্রথম শর্ত মিথ্যা হলে দ্বিতীয় শর্তটি পরীক্ষা করা হবে।
if স্টেটমেন্ট (C উদাহরণ):
int x = 10;
if(x > 5) {
printf("x is greater than 5");
}if-else স্টেটমেন্ট (C উদাহরণ):
int x = 3;
if(x > 5) {
printf("x is greater than 5");
} else {
printf("x is not greater than 5");
}if-else এবং switch স্টেটমেন্ট (C উদাহরণ):
int x = 3;
switch(x) {
case 1:
printf("x is 1");
break;
case 2:
printf("x is 2");
break;
default:
printf("x is neither 1 nor 2");
}এখানে, switch স্টেটমেন্টের মাধ্যমে x এর মানের উপর ভিত্তি করে আলাদা আলাদা আউটপুট দেয়া হচ্ছে।
সারসংক্ষেপ
- ভেরিয়েবল: একটি ডেটা স্টোরেজ ইউনিট যা বিভিন্ন ধরনের তথ্য ধারণ করে এবং এর মান পরিবর্তন করা যেতে পারে।
- লুপ: একটি কোড ব্লক যা নির্দিষ্ট শর্ত বা সংখ্যা অনুযায়ী বারবার চলে। প্রধান ধরনের লুপ হল
for,while, এবংdo-while। - কন্ডিশনাল স্টেটমেন্ট: শর্তের ভিত্তিতে কোডের বিভিন্ন অংশ এক্সিকিউট করা হয়। এর মধ্যে
if,else, এবংelifশর্তগুলি অন্তর্ভুক্ত।
এই তিনটি ধারণা প্রোগ্রামিংয়ের ভিত্তি, এবং এগুলির মাধ্যমে প্রোগ্রামগুলিকে কার্যকরী ও ডাইনামিক করা যায়।
ফাংশন এবং এর ব্যবহার
ফাংশন হলো প্রোগ্রামিংয়ের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ যা কোডের পুনঃব্যবহারযোগ্যতা এবং সংগঠন বৃদ্ধি করে। ফাংশন হল এমন একটি কোড ব্লক যা একটি নির্দিষ্ট কাজ বা অ্যালগরিদম সম্পাদন করে, এবং একটি নামের মাধ্যমে একাধিক স্থানে ব্যবহৃত হতে পারে। এটি ইনপুট নেয় এবং একটি আউটপুট প্রদান করে (যদিও আউটপুট সব সময় আবশ্যক নয়)।
শেল স্ক্রিপ্টে ফাংশন ব্যবহারের মাধ্যমে কোডের পুনঃব্যবহারযোগ্যতা বাড়ানো যায়, এবং স্ক্রিপ্ট লেখার সময় কোডের পরিষ্কারতা এবং রক্ষণাবেক্ষণ সহজ হয়।
1. ফাংশন কী?
ফাংশন হলো এমন একটি কোড ব্লক যা নির্দিষ্ট এক বা একাধিক কাজ সম্পাদন করে এবং সাধারণত তা পুনরায় একাধিক জায়গায় ব্যবহার করা যেতে পারে। ফাংশন ব্যবহারে কোড ছোট, পরিষ্কার এবং সহজভাবে রক্ষণাবেক্ষণযোগ্য হয়ে ওঠে।
2. শেল স্ক্রিপ্টে ফাংশন তৈরি এবং ব্যবহার
ফাংশন তৈরি করার সিনট্যাক্স:
function function_name {
commands
}অথবা
function_name() {
commands
}function_name: ফাংশনের নাম।commands: ফাংশনের ভিতরে যে কমান্ডগুলো চলবে তা।
3. ফাংশন উদাহরণ
উদাহরণ ১: একটি সাধারণ ফাংশন
#!/bin/bash
greet() {
echo "Hello, $1!"
}
greet "Alice"
greet "Bob"এখানে:
greetএকটি ফাংশন যার মাধ্যমে নামের আর্গুমেন্ট হিসেবে "Alice" এবং "Bob" দেয়া হয়।$1হল প্রথম আর্গুমেন্ট, অর্থাৎAliceএবংBobএর মান।
আউটপুট:
Hello, Alice!
Hello, Bob!4. ফাংশনে আর্গুমেন্ট পাঠানো
ফাংশনকে আর্গুমেন্ট (input) পাঠানো সম্ভব, এবং ফাংশন ভেতরে সেই আর্গুমেন্ট ব্যবহার করা যায়।
উদাহরণ ২: আর্গুমেন্ট নিয়ে ফাংশন তৈরি:
#!/bin/bash
add_numbers() {
sum=$(( $1 + $2 ))
echo "Sum is: $sum"
}
add_numbers 5 10এখানে:
add_numbersফাংশনটি দুটি নম্বর নেবে এবং তাদের যোগফল প্রিন্ট করবে।$1এবং$2হল ফাংশনের প্রথম এবং দ্বিতীয় আর্গুমেন্ট।
আউটপুট:
Sum is: 155. ফাংশন থেকে মান রিটার্ন করা
শেল স্ক্রিপ্টে সরাসরি ফাংশন থেকে মান রিটার্ন করার জন্য echo বা return ব্যবহার করা হয়। তবে return শুধুমাত্র ফাংশনের শেষ স্টেটাস কোড রিটার্ন করে (যা সাধারণত ০ থেকে ২৫৫ মধ্যে থাকে), এবং echo কমান্ড দ্বারা ফলাফল ফিরিয়ে আনা হয়।
উদাহরণ ৩: ফাংশন থেকে মান রিটার্ন করা:
#!/bin/bash
multiply() {
result=$(( $1 * $2 ))
echo $result
}
output=$(multiply 4 5)
echo "The result is: $output"এখানে:
multiplyফাংশন দুটি নম্বর নেবে এবং তাদের গুণফল ফেরত দিবে।$( )দ্বারাmultiplyফাংশনের আউটপুটকেoutputভেরিয়েবলে ধারণ করা হচ্ছে।
আউটপুট:
The result is: 206. ফাংশন কল করার বিভিন্ন উপায়
ডাইরেক্ট কল:
ফাংশনটি সরাসরি তার নাম দিয়ে কল করা যায়:greet "Alice"ফাংশন আর্গুমেন্টের মাধ্যমে:
ফাংশনে ইনপুট হিসাবে আর্গুমেন্ট পাঠানো যায়:add_numbers 5 10ফাংশন আউটপুট স্টোর করা:
ফাংশন থেকে প্রাপ্ত আউটপুট একটি ভেরিয়েবলে সংরক্ষণ করা যায়:result=$(multiply 4 5)
7. ফাংশন ব্যবহার: পুনরায় ব্যবহারযোগ্য কোড
ফাংশন ব্যবহার করলে কোডের পুনঃব্যবহারযোগ্যতা বাড়ানো যায়। একাধিক জায়গায় একই কাজের জন্য ফাংশন কল করা যায়, যা কোডের পুনরাবৃত্তি কমায় এবং কোড ক্লিন রাখে।
উদাহরণ ৪: ফাংশন ব্যবহার করে ডিরেক্টরি চেক করা:
#!/bin/bash
check_directory() {
if [ -d "$1" ]; then
echo "Directory exists: $1"
else
echo "Directory does not exist: $1"
fi
}
check_directory "/home/user1"
check_directory "/home/user2"এখানে, check_directory ফাংশনটি একটি ডিরেক্টরি চেক করবে এবং তার অস্তিত্ব অনুযায়ী একটি বার্তা প্রিন্ট করবে। একে দুইবার কল করা হয়েছে, বিভিন্ন ইনপুট দিয়ে।
আউটপুট:
Directory exists: /home/user1
Directory does not exist: /home/user28. ফাংশন থেকে রিটার্ন কোড ব্যবহার
শেল স্ক্রিপ্টে ফাংশন কেবল একটি স্টেটাস কোড (অর্থাৎ 0 বা 1 বা অন্য কোন কোড) রিটার্ন করতে পারে। তবে আপনি echo এর মাধ্যমে একটি ফলাফলও ফিরিয়ে দিতে পারেন।
উদাহরণ ৫: রিটার্ন কোড ব্যবহার:
#!/bin/bash
check_even_or_odd() {
if (( $1 % 2 == 0 )); then
return 0 # even
else
return 1 # odd
fi
}
check_even_or_odd 5
status=$?
if [ $status -eq 0 ]; then
echo "The number is even."
else
echo "The number is odd."
fiএখানে, check_even_or_odd ফাংশনটি একটি নম্বর চেক করে এবং তার পরিণাম হিসাবে একটি রিটার্ন কোড প্রদান করে।
আউটপুট:
The number is odd.সারসংক্ষেপ
- ফাংশন হল কোডের একটি ব্লক যা একটি নির্দিষ্ট কাজ সম্পাদন করে এবং পুনরায় ব্যবহৃত হতে পারে।
- শেল স্ক্রিপ্টে ফাংশন তৈরি করা সহজ এবং এটি ইনপুট আর্গুমেন্ট গ্রহণ করতে পারে এবং আউটপুট প্রদান করতে পারে।
- ফাংশনের মাধ্যমে কোড পুনঃব্যবহারযোগ্য হয় এবং স্ক্রিপ্টের রক্ষণাবেক্ষণ সহজ হয়।
- শেল স্ক্রিপ্টে ফাংশনের সাহায্যে শর্তাধীন পরীক্ষা, গণনা, এবং অন্যান্য কার্য সম্পাদন করা সম্ভব।
ফাংশন ব্যবহারের মাধ্যমে শেল স্ক্রিপ্ট আরও সংগঠিত, পরিষ্কার এবং দক্ষ হয়ে ওঠে।
স্ক্রিপ্টে আর্গুমেন্ট পাস করা
শেল স্ক্রিপ্টে আর্গুমেন্ট পাস করা হল একটি গুরুত্বপূর্ণ ধারণা, যা ব্যবহারকারীদের স্ক্রিপ্টের সাথে ইনপুট হিসেবে তথ্য প্রদান করার সুযোগ দেয়। স্ক্রিপ্ট রান করার সময়, আপনি যেকোনো আর্গুমেন্ট (যেমন ফাইল নাম, সংখ্যা, বা যে কোনো ধরনের ডেটা) শেল স্ক্রিপ্টে পাস করতে পারেন এবং স্ক্রিপ্টের মধ্যে সেগুলি প্রক্রিয়া করা যায়।
আর্গুমেন্ট কী?
আর্গুমেন্ট হল সেই ডেটা যা আপনি শেল স্ক্রিপ্টকে রান করার সময় প্রদান করেন। এগুলি স্ক্রিপ্টে একটি বা একাধিক ইনপুট হিসেবে কাজ করে। আপনি যখন স্ক্রিপ্টটি চালান, তখন স্ক্রিপ্টের পরে যেসব মান (values) লিখবেন, সেগুলি আর্গুমেন্ট হিসেবে গণ্য হবে।
আর্গুমেন্ট পাস করার প্রক্রিয়া
ধরা যাক, আপনার একটি শেল স্ক্রিপ্ট আছে যা আর্গুমেন্ট নেয় এবং সেটি ব্যবহার করে কাজ করে। এটি করতে হলে আপনাকে স্ক্রিপ্টের সাথে আর্গুমেন্ট পাস করতে হবে।
স্ক্রিপ্টে আর্গুমেন্ট ব্যবহারের জন্য কিছু উদাহরণ
একটি আর্গুমেন্ট পাস করা:
উদাহরণ হিসেবে নিচে একটি স্ক্রিপ্ট দেখানো হল, যা ব্যবহারকারীর পাস করা আর্গুমেন্ট প্রিন্ট করে।স্ক্রিপ্ট:
greet.sh#!/bin/bash # স্ক্রিপ্টে পাস করা আর্গুমেন্ট গ্রহণ echo "Hello, $1!"এখানে,
$1হল প্রথম আর্গুমেন্ট। স্ক্রিপ্টটি রান করার সময়, আপনি আর্গুমেন্ট পাস করতে পারেন:./greet.sh Johnআউটপুট:
Hello, John!এখানে,
"John"হল আর্গুমেন্ট যা স্ক্রিপ্টে$1হিসেবে পাস করা হয়েছে।
একাধিক আর্গুমেন্ট পাস করা:
আপনি একাধিক আর্গুমেন্টও পাস করতে পারেন। উদাহরণস্বরূপ, যদি আপনি দুটি আর্গুমেন্ট পাস করতে চান:স্ক্রিপ্ট:
greet_multiple.sh#!/bin/bash # দুটি আর্গুমেন্ট গ্রহণ echo "Hello, $1!" echo "Your role is $2."এখানে
$1প্রথম আর্গুমেন্ট (যেমন নাম) এবং$2দ্বিতীয় আর্গুমেন্ট (যেমন কাজের নাম)।স্ক্রিপ্টটি চালান:
./greet_multiple.sh Alice Developerআউটপুট:
Hello, Alice! Your role is Developer.
সমস্ত আর্গুমেন্ট দেখানো:
কখনও কখনও আপনাকে সমস্ত আর্গুমেন্ট একত্রিত করে দেখতে হতে পারে। এর জন্য আপনি$@বা$*ব্যবহার করতে পারেন, যা সমস্ত আর্গুমেন্ট ধারণ করে।স্ক্রিপ্ট:
show_args.sh#!/bin/bash # সমস্ত আর্গুমেন্ট দেখানো echo "All arguments: $@"স্ক্রিপ্টটি চালান:
./show_args.sh Alice Developer 30আউটপুট:
All arguments: Alice Developer 30
আর্গুমেন্টের সংখ্যা জানা:
শেল স্ক্রিপ্টে আপনি কতটি আর্গুমেন্ট পাস করা হয়েছে, তা জানতে$#ব্যবহার করতে পারেন। এটি পাস করা আর্গুমেন্টের সংখ্যা প্রদান করে।স্ক্রিপ্ট:
count_args.sh#!/bin/bash echo "Number of arguments passed: $#"স্ক্রিপ্টটি চালান:
./count_args.sh Alice Developer 30আউটপুট:
Number of arguments passed: 3
ডিফল্ট মান ব্যবহার করা (কন্ডিশনাল চেক):
যদি কোনো আর্গুমেন্ট পাস না করা হয়, তাহলে আপনি একটি ডিফল্ট মান ব্যবহার করতে পারেন।স্ক্রিপ্ট:
default_args.sh#!/bin/bash # যদি আর্গুমেন্ট পাস না করা হয়, তবে ডিফল্ট মান ব্যবহার করা name=${1:-"Guest"} echo "Hello, $name!"এখানে, যদি প্রথম আর্গুমেন্ট না দেওয়া হয়, তবে
"Guest"ডিফল্ট মান হিসেবে ব্যবহৃত হবে।স্ক্রিপ্টটি চালান:
./default_args.shআউটপুট:
Hello, Guest!অথবা:
./default_args.sh Aliceআউটপুট:
Hello, Alice!
সারসংক্ষেপ
- শেল স্ক্রিপ্টে আর্গুমেন্ট পাস করার মাধ্যমে আপনি স্ক্রিপ্টকে আরো ডাইনামিক এবং ব্যবহারযোগ্য করতে পারেন।
$1,$2, ... আর্গুমেন্টগুলি ব্যবহৃত হয় স্ক্রিপ্টের মধ্যে, যেখানে$1প্রথম আর্গুমেন্ট,$2দ্বিতীয় আর্গুমেন্ট ইত্যাদি।$@বা$*ব্যবহার করে আপনি সমস্ত আর্গুমেন্ট একত্রিত করতে পারেন।$#আর্গুমেন্টের সংখ্যা জানতে ব্যবহৃত হয়।- আপনি
:-ব্যবহার করে ডিফল্ট মান সেট করতে পারেন যদি আর্গুমেন্ট না দেওয়া হয়।
এইভাবে শেল স্ক্রিপ্টে আর্গুমেন্ট পাস করা এবং এগুলির মাধ্যমে কার্যকরী স্ক্রিপ্ট তৈরি করা যায়।
Read more