シェルスクリプトで関数名を取得する

${FUNCNAME[0]}で現在実行中の関数名、${FUNCNAME[1]}で呼び出し元の関数名を取得することができます。
なお、関数内で$0を呼び出しても取得できるのは関数名ではなくファイル名です。

test.sh

#!/bin/sh

function output() {
  echo $0
  echo ${FUNCNAME[0]}
  echo ${FUNCNAME[1]}
}

output
$ ./test.sh
test.sh
output
main