如何确定脚本中的被调用函数名称

如何确定脚本中的被调用函数名称

简而言之,执行以下操作:

-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上面开始,你也可以使用$0inside 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 机器上执行此操作。

相关内容