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
。