ব্যাশে ফাংশন তৈরি এবং কল করার একটি দ্রুত গাইড।
একটি ফাংশন হলো পুনঃব্যবহারযোগ্য কোড ব্লক যা নির্দিষ্ট কাজ সম্পাদন করতে ব্যবহৃত হয়। ফাংশন ব্যবহার করলে কোডের মডুলারিটি বাড়ে এবং উচ্চ মাত্রায় কোড পুনর্ব্যবহার সম্ভব হয়।
ব্যাশ কিছু বিল্ট-ইন ফাংশন প্রদান করে যেমন echo এবং read, কিন্তু আমরা নিজেদের ফাংশনও তৈরি করতে পারি।
ব্যাশে ফাংশন তৈরি করা
ব্যাশে ফাংশন তৈরির দুটি পদ্ধতি রয়েছে:
একটি পদ্ধতি হলো কেবল ফাংশনের নাম ব্যবহার করা:
functionName(){
// ফাংশনের স্কোপ
}
সংক্ষিপ্ত সংস্করণ:
functionName(){ echo "hello"; }
অন্য একটি পদ্ধতি হলো function কিওয়ার্ড ব্যবহার করে ফাংশন ঘোষণা করা:
function functionName {
// ফাংশনের স্কোপ
}
সংক্ষিপ্ত সংস্করণ:
function functionName { echo "hello"; }
function কিওয়ার্ড ব্যবহার করার সময় () প্রয়োজন হয় না।
ব্যাশ ফাংশন সম্পর্কে গুরুত্বপূর্ণ কিছু বিষয়:
- কার্লি ব্রেস
{}এর মাঝপথের কোডই ফাংশনের বডি এবং স্কোপ - ফাংশন কল করার সময় কেবল ফাংশনের নাম লিখলেই চলে, ব্যাশ স্ক্রিপ্টের যেকোনো জায়গা থেকে
- ফাংশন ব্যবহার করার আগে সংজ্ঞায়িত করা আবশ্যক
- সংক্ষিপ্ত সংস্করণ ব্যবহার করলে শেষ কমান্ডে সেমিকোলন
;থাকতে হবে
উদাহরণ:
নিচের কোড একটি ফাংশন তৈরি করে যা কনসোলে "Hello World" প্রিন্ট করে। ফাংশনের নাম printHello:
#!/bin/bash
printHello(){
echo "Hello World!"
}
ব্যাশে ফাংশন কল করা
উপরোক্ত ফাংশনটি কিভাবে কল করবেন? আপনার ব্যাশ স্ক্রিপ্টে শুধু ফাংশনের নাম লিখলেই এটি কল হবে।
উদাহরণ:
#!/bin/bash
printHello(){
echo "Hello World!"
}
# স্ক্রিপ্টের যেকোনো জায়গা থেকে printHello ফাংশন কল
printHello
আউটপুট:
Hello World
আর্গুমেন্ট পাস করা
উপরোক্ত printHello() ফাংশনের কোনো প্যারামিটার নেই। যেকোনো সময় এটি কল করলে "Hello World" আউটপুট দেয়। কিন্তু আমরা যদি আরও জেনেরিক ফাংশন চাই? যেমন, আর্গুমেন্ট পাস করলে সেটি প্রিন্ট করবে।
এটি করার দুটি উপায় রয়েছে।
প্রথমে, printHello() ফাংশনটি মডিফাই করে পাস করা আর্গুমেন্ট প্রিন্ট করতে পারি:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny World
printAny DevQa
printAny I love coding!
আউটপুট:
Hello World
Hello DevQA
Hello I
তৃতীয় প্রিন্ট স্টেটমেন্ট printAny I love coding! শুধু "Hello, I" আউটপুট দিয়েছে।
কারণ আমাদের ফাংশনটি শুধু একটি প্যারামিটার $1 নেয়। "I love coding!" আসলে তিনটি প্যারামিটার।
যদি পুরো টেক্সট প্রিন্ট করতে চাইম তবে কোটেশন ব্যবহার করতে হবে:
#!/bin/bash
printAny(){
echo "Hello " $1
}
printAny "I love coding!"
আউটপুট:
Hello I love coding
আরেক উদাহরণ, সংখ্যাও পাস করা যায়:
#!/bin/bash
add() {
result=$(($1 + $2))
echo "Result is: $result"
}
add 1 2
আউটপুট:
Result is: 3
মান ফেরত দেওয়া
ব্যাশ ফাংশন মানও ফেরত দিতে পারে।
উদাহরণ:
#!/bin/bash
add() {
result=$(($1 + $2))
}
add 1 2
echo "The sum is: "$result
আউটপুট:
The sum is: 3
ফাংশন থেকে মান ফেরত দেওয়ার আরেকটি উপায় হলো ফলাফল একটি ভেরিয়েবলে অ্যাসাইন করা, যা পরে ব্যবহার করা যায়।
#!/bin/bash
add () {
local result=$(($1 + $2))
echo "$result"
}
result="$(add 1 2)"
echo "The sum is: "$result
আউটপুট:
The sum is: 3