Bash FUNCNAMEはDashと同じです。

Bash FUNCNAMEはDashと同じです。

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

関連情報