Gönderen Bash Reference Manual :
FUNCNAME
Yürütme çağrısı yığınında bulunan tüm kabuk işlevlerinin adlarını içeren bir dizi değişkeni. 0 dizinine sahip öğe, şu anda yürütülen kabuk işlevlerinin adıdır. En alttaki eleman (en yüksek endekse sahip olan eleman) "ana" dır. Bu değişken yalnızca bir kabuk işlevi yürütüldüğünde mevcuttur. FUNCNAME öğesine yapılan atamaların hiçbir etkisi yoktur ve hata durumu döndürür. FUNCNAME ayarlanmamışsa, daha sonra sıfırlansa bile özel özelliklerini kaybeder.
Bu değişken BASH_LINENO ve BASH_SOURCE ile kullanılabilir. FUNCNAME öğesinin her öğesinde, çağrı yığınını açıklamak için BASH_LINENO ve BASH_SOURCE öğelerinde karşılık gelen öğeler bulunur. Örneğin, $ {BAM_LINENO [$ i]} satır numarasındaki $ {BASH_SOURCE [$ i + 1]} dosyasından $ {FUNCNAME [$ i]} çağrıldı. Arayan yerleşik, bu bilgiyi kullanarak geçerli çağrı yığınını görüntüler.
Dizin olmadan bash dizilerine erişildiğinde, dizinin ilk öğesi döndürülür, bu nedenle $FUNCNAME
hemen geçerli işlevin adını sağlamak için basit durumlarda çalışır, ancak çağrı yığınındaki diğer tüm işlevleri de içerir. Örneğin:
# 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
Çıktı olacak:
$ bash foobar
In function foo: FUNCNAME=foo foobar main
foobar
In function foobar: FUNCNAME=foobar main
FUNCNAME
Dizi ve diğer Bash değişkenlerini kullanan Bash günlük kaydı çerçevesi : github.com/codeforester/base/blob/master/lib/stdlib.sh . Fonksiyonlarını bakınlog_debug_enter
velog_debug_leave
özellikle de.