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

chi*_*.de 5 bash shell-script function

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

-bash$ function tt
{
 echo $0;
}

-bash$ tt
Run Code Online (Sandbox Code Playgroud)

$0将返回-bash,但如何获取调用的函数名称,即tt在此示例中?

cuo*_*glm 11

在 中bash,使用FUNCNAME数组:

tt() {
  printf '%s\n' "$FUNCNAME"
}
Run Code Online (Sandbox Code Playgroud)

通过一些ksh实现:

tt() { printf '%s\n' "$0"; }
Run Code Online (Sandbox Code Playgroud)

ksh93

tt() { printf '%s\n' "${.sh.fun}"; }
Run Code Online (Sandbox Code Playgroud)

ksh93d上面开始,您也可以使用$0inside function 来获取函数名称,但必须使用function name { ...; }form定义函数。


在 中zsh,您可以使用funcstack数组:

tt() { print -rl -- $funcstack[1]; }
Run Code Online (Sandbox Code Playgroud)

$0内部函数。


fish

function tt
  printf '%s\n' "$_"
end
Run Code Online (Sandbox Code Playgroud)


jw0*_*013 5

在 bash 中,您可以使用${FUNCNAME[0]}.