Bash FUNCNAME 在 Dash 中等效

Bash FUNCNAME 在 Dash 中等效

Bash 可以打印当前函数名称:

$ bash -c 'g(){ echo $FUNCNAME; }; g'
g

然而达世币不能使用函数名:

$ dash -c 'g(){ echo $FUNCNAME; }; g'

可以用 Dash 访问当前函数名称吗?

答案1

对于任何 POSIX shell:

defun() {
  eval "
    $1() {
      FUNCNAME=$1
      $(cat)
    }
  "
}

defun g <<\}
  printf '%s\n' "$FUNCNAME"
}

g

请注意,您不能调用由defun定义的函数内部定义的函数defun

相关内容