Bashは現在の関数名を印刷できます。
$ bash -c 'g(){ echo $FUNCNAME; }; g'
g
ただし、ダッシュは使用できません。機能名:
$ dash -c 'g(){ echo $FUNCNAME; }; g'
Dashを使用して現在の関数名にアクセスできますか?
答え1
POSIXシェルの場合:
defun() {
eval "
$1() {
FUNCNAME=$1
$(cat)
}
"
}
defun g <<\}
printf '%s\n' "$FUNCNAME"
}
g
defun
定義された関数内で定義された関数を呼び出すことができないことに注意してくださいdefun
。