como obter ou refletir o nome da função bash que é chamada? [duplicado]

1

eu ainda não encontrei uma solução para isso. Alguém uma dica?

Às vezes eu escrevo funções bash em meus scripts de shell e adoro ter meus scripts sendo detalhados, não apenas para depuração. Então, às vezes eu gostaria de exibir o "nome" de uma função chamada bash como uma "variável" em meus scripts.

o que eu fiz algumas vezes é definir apenas uma variável regular contendo o nome da função. assim:

test ()
{
    funcName=test
    echo "function running..."
    echo "\
test ()
{
    funcName=test
    echo "function running..."
    echo "\%pre% is : $0"
    echo "function name is : $funcName"
}
is : $0" echo "function name is : $funcName" }

mas isso é meio idiota.

Existe algo melhor?

    
por Axel Werner 01.04.2016 / 12:45

1 resposta

1

Às vezes, basta ler man bash :

FUNCNAME

An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bottom-most element (the one with the highest index) is "main". This variable exists only when a shell function is executing. Assignments to FUNC- NAME have no effect and return an error status. If FUNCNAME is unset, it loses its special properties, even if it is subsequently reset.

Exemplo de uso:

#!/usr/bin/env bash

func()
{
    echo I am inside "$FUNCNAME"
}

foo()
{
    echo I am inside "$FUNCNAME"
}

func
foo
    
por 01.04.2016 / 12:58