থেকে ব্যাশ রেফারেন্স ম্যানুয়াল :
FUNCNAME
এক্সিকিউশন কল স্ট্যাকটিতে বর্তমানে সমস্ত শেল ফাংশনের নাম সম্বলিত একটি অ্যারে ভেরিয়েবল। সূচক 0 সহ উপাদানটি বর্তমানে কার্যকর হওয়া শেল ফাংশনের নাম। নীচের দিকের সর্বাধিক উপাদান (সর্বাধিক সূচকযুক্ত একটি) "প্রধান" main এই পরিবর্তনশীল কেবল তখনই উপস্থিত থাকে যখন শেল ফাংশন কার্যকর হয় exec FUNCNAME এ নিয়োগের কোনও প্রভাব নেই এবং ত্রুটির স্থিতি ফিরে আসে return FUNCNAME যদি সেট না করা থাকে তবে এটি পরে পুনরায় সেট করা হলেও এটি তার বিশেষ বৈশিষ্ট্যগুলি হারাবে।
এই চলকটি BASH_LINENO এবং BASH_SOURCE এর সাথে ব্যবহার করা যেতে পারে। কল স্ট্যাকটি বর্ণনা করার জন্য FUNCNAME এর প্রতিটি উপাদানের BASH_LINENO এবং BASH_SOURCE এ সম্পর্কিত উপাদান রয়েছে। উদাহরণস্বরূপ, line UN BUNH_SOURCE [$ i + 1] file ফাইল থেকে $ UN FUNCNAME [$ i] called ফাইলটি কল করা হয়েছিল {AS BASH_LINENO [$ i]}} কলার অন্তর্নির্মিত এই তথ্যটি ব্যবহার করে বর্তমান কল স্ট্যাকটি প্রদর্শন করে।
কোনও নির্দেশিকা ব্যতীত যখন বাশ অ্যারে অ্যাক্সেস করা হয় তখন অ্যারের প্রথম উপাদানটি ফিরে আসবে, তাই $FUNCNAME
তাত্ক্ষণিকভাবে বর্তমান ফাংশনটির নাম সরবরাহ করতে সাধারণ ক্ষেত্রে কাজ করবে, তবে এতে কল স্ট্যাকের অন্যান্য সমস্ত ফাংশনও রয়েছে। উদাহরণ স্বরূপ:
# in a file "foobar"
function foo {
echo foo
echo "In function $FUNCNAME: FUNCNAME=${FUNCNAME[*]}" >&2
}
function foobar {
echo "$(foo)bar"
echo "In function $FUNCNAME: FUNCNAME=${FUNCNAME[*]}" >&2
}
foobar
আউটপুট দেবে:
$ bash foobar
In function foo: FUNCNAME=foo foobar main
foobar
In function foobar: FUNCNAME=foobar main
FUNCNAME
অ্যারে এবং অন্যান্য ব্যাশ ভেরিয়েবলগুলি ব্যবহার করে: github.com/codefirester/base/blob/master/lib/stdlib.sh । ফাংশনlog_debug_enter
এবংlog_debug_leave
বিশেষত দেখুন।