से बैश संदर्भ मैनुअल :
FUNCNAME
एक शेल वैरिएबल जिसमें सभी शेल फ़ंक्शंस के नाम हैं जो वर्तमान में निष्पादन कॉल स्टैक में हैं। इंडेक्स 0 वाला तत्व किसी भी वर्तमान में निष्पादित शेल फ़ंक्शन का नाम है। नीचे-सबसे तत्व (उच्चतम सूचकांक वाला) "मुख्य" है। यह चर केवल तब होता है जब शेल फ़ंक्शन निष्पादित हो रहा हो। FUNCNAME को असाइनमेंट का कोई प्रभाव नहीं है और एक त्रुटि स्थिति लौटाता है। यदि FUNCNAME परेशान है, तो यह अपने विशेष गुणों को खो देता है, भले ही यह बाद में रीसेट हो।
इस चर का उपयोग BASH_LINENO और BASH_SOURCE के साथ किया जा सकता है। FUNCNAME के प्रत्येक तत्व में कॉल स्टैक का वर्णन करने के लिए BASH_LINENO और BASH_SOURCE में संबंधित तत्व हैं। उदाहरण के लिए, $ {FUNCNAME [$ i]} को फ़ाइल से $ {BASH_SOURCE [$ i + 1]} लाइन नंबर $ {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/codeforester/base/blob/master/lib/stdlib.sh । कार्योंlog_debug_enterऔरlog_debug_leaveविशेष रूप से देखें ।