BASH'da, işlev adını işlev gövdesine almak mümkün mü? Aşağıdaki kodları örnek alarak, "Test" işlevini vücudunda yazdırmak istiyorum, ancak "$ 0", işlev adı yerine komut dosyasının adına başvuruyor gibi görünüyor. Peki işlev adı nasıl alınır? ${FUNCNAME[ 0 ]}
FUNCNAME çağrı yığını tüm fonksiyonları isimleri içeren bir dizidir içindeBASH'da, işlev adını işlev gövdesine almak mümkün mü?
#!/bin/bash
function Test
{
if [ $# -lt 1 ]
then
# how to get the function name here?
echo "$0 num" 1>&2
exit 1
fi
local num="${1}"
echo "${num}"
}
# the correct function
Test 100
# missing argument, the function should exit with error
Test
exit 0
Teşekkürler, bu gerçekten yardımcı olur. Sadece sorumu çözmekten daha fazlasını öğreniyorum. Bu dizi, komut dosyası başarısız olduğunda çağrıları yazdırmak için kullanılabilir. –
Elbette. Bu bağlamda, "BASH_LINENO" nun içeriğini de ilginizi çekebilir. – FatalError
Veya daha kısa ve eşdeğer $ FUNCNAME kullanabilirsiniz. –