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

おすすめ記事