Como determinar o nome da função callee em um script

4

Para resumir, fazendo algo como:

-bash$ function tt
{
 echo $0;
}

-bash$ tt

$0 retornará -bash , mas como obter o nome da função chamado, ou seja, tt neste exemplo?

    
por childno͡.de 10.02.2016 / 17:43

3 respostas

8

Em bash , use o array FUNCNAME :

tt() {
  printf '%s\n' "$FUNCNAME"
}

Com algumas implementações ksh :

tt() { printf '%s\n' "$0"; }

Em ksh93 :

tt() { printf '%s\n' "${.sh.fun}"; }

De ksh93d e acima, você também pode usar a função $0 inside para obter o nome da função, mas deve definir a função usando function name { ...; } form.

Em zsh , você pode usar funcstack array:

tt() { print -rl -- $funcstack[1]; }

ou $0 dentro da função.

Em fish :

function tt
  printf '%s\n' "$_"
end
    
por 10.02.2016 / 18:14
4

No bash, você pode usar ${FUNCNAME[0]} .

    
por 10.02.2016 / 18:11
0
function tt { echo ${FUNCNAME}; }

faz isso na minha caixa do CentOS 6.

    
por 10.02.2016 / 18:12