রিদওয়ান বিন শামীম
ফাংশন কোনও স্ক্রিপ্টের ফাংশনালিটিকে ছোট ছোট লজিকাল সাবসেকশনে ভাগ করে যাতে এগুলো প্রয়োজনমত তাদের কাজ সম্পন্ন করতে পারে।
পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ফাংশন ব্যবহার করা কোডের পুনঃব্যবহারের একটি ভাল উপায়। কোডের পুনঃব্যবহার বর্তমান সময়ের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিঙের একটি গুরুত্বপূর্ণ অংশ।
সেল ফাংশন অন্যান্য প্রোগ্রামিং ভাষার সাবরুটিন, প্রক্রিয়া ও ফাংশনের মতই।
ফাংশন তৈরি করা
ফাংশন হিসেবে স্বীকৃতি পেতে নিচের সিনট্যাক্স ব্যবহার করতে হয়,
function_name () { list of commands }
নিচে ফাংশনের ব্যবহারের সহজ উদাহরণ দেয়া হল,
#!/bin/sh # Define your function here Hello () { echo "Hello World" } # Invoke your function Hello
উপরের কোডকে কার্যে পরিণত করলে নিম্নে প্রদত্ত ফলাফল পাওয়া যাবে,
$./test.sh Hello World $
ফাংশনের পাস প্যারামিটার
কিছু ফাংশন কাজের ক্ষেত্রে প্যারামিটার গ্রহণ করে, $1, $2 এসব দ্বারা এই ফাংশন প্রকাশ করা হয়,
#!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2" } # Invoke your function Hello Zara Ali
যা নিচের ফলাফল দেখাবে,
$./test.sh Hello World Zara Ali $
ফাংশন থেকে মান ফিরিয়ে আনাঃ return কম্যান্ড ব্যবহার করে ফাংশন থেকে যেকোনো মান ফিরিয়ে আনা সম্ভব, যার সিনট্যাক্স হল,
return code
এখানে যেকোনো কোড হতে পারে কিন্তু তা স্ক্রিপ্টের কনটেক্সটে অর্থবোধক হতে হবে।
যেমন, নিচের ফাংশন ভ্যালু ফিরিয়ে আনে,
#!/bin/sh # Define your function here Hello () { echo "Hello World $1 $2" return 10 } # Invoke your function Hello Zara Ali # Capture value returnd by last command ret=$? echo "Return value is $ret"
যা নিম্নোক্ত ফলাফল দেবে,
$./test.sh Hello World Zara Ali Return value is 10 $
নেস্টেড ফাংশন
ফাংশনের একটি মজার ফিচার হল, এটি অন্য ফাংশনকে যেমন কল করতে পারে তেমনি নিজেদেরও কল করতে পারে। এধরনের ফাংশনকে রিকারসিভ ফাংশন বলে।
দুটি ফাংশনের নেস্টিং নিচের উদাহরণে দেয়া হল,
#!/bin/sh # Calling one function from another number_one () { echo "This is the first function speaking..." number_two } number_two () { echo "This is now the second function speaking..." } # Calling function one. number_one
এটি যে ফলাফল দেখাবে তা হল,
This is the first function speaking... This is now the second function speaking...
প্রম্পট থেকে ফাংশন কল
.profile এর ভিতরে সচরাচর ব্যবহৃত ফাংশনের জন্য সংজ্ঞা অন্তর্ভুক্ত করা যায়,অপরদিকে test.sh জাতীয় ফাইলে সংজ্ঞার গ্রুপ সংবদ্ধ করে কারেন্ট সেলে নিচের কোড দ্বারা সম্পাদন করা যায়,
$. test.sh
যা কিনা কারেন্ট সেলকে নিচের মত করে বিবৃত করে,
$ number_one This is the first function speaking... This is now the second function speaking... $
সেল থেকে কোনও ফাংশনের সংজ্ঞা মুছে ফেলতে .f অপশনের সাথে unset কম্যান্ড ব্যবহার করতে হয়, এটি সেই একই কম্যান্ড যা সেল থেকে চলকের বিবরণ মুছে ফেলতে ব্যবহৃত হয়,
$unset.f function_name