简而言之,执行以下操作:
-bash$ function tt
{
echo $0;
}
-bash$ tt
$0
将返回-bash
,但如何获取调用的函数名称,即tt
本例中的函数名称?
答案1
正在bash
使用函数名大批:
tt() {
printf '%s\n' "$FUNCNAME"
}
通过一些ksh
实现:
tt() { printf '%s\n' "$0"; }
在ksh93
:
tt() { printf '%s\n' "${.sh.fun}"; }
从ksh93d
上面开始,你也可以使用$0
inside function 来获取函数名,但是你必须使用function name { ...; }
form 来定义函数。
在 中zsh
,您可以使用funcstack
数组:
tt() { print -rl -- $funcstack[1]; }
或$0
内部函数。
在fish
:
function tt
printf '%s\n' "$_"
end
答案2
在 bash 中,您可以使用${FUNCNAME[0]}
.
答案3
function tt { echo ${FUNCNAME}; }
在我的 CentOS 6 机器上执行此操作。