Se eu tiver um script Bash como:
#!/bin/bash
f() {
# echo function name, "f" in this case
}
Há alguma maneira de fazer isso? Isso pode ser usado em mensagens de ajuda como
printf "Usage: %s: blah blah blah \n" $(basename $0) >&2;
Somente neste caso o que eu queria não era $0
, qual é o nome do arquivo do script.
FUNCNAME
matriz e outras variáveis do Bash: github.com/codeforester/base/blob/master/lib/stdlib.sh . Veja funçõeslog_debug_enter
elog_debug_leave
em particular.Respostas:
Você pode usar
${FUNCNAME[0]}
embash
obter o nome da função.fonte
No Manual de Referência do Bash :
Quando as matrizes bash são acessadas sem um índice, o primeiro elemento da matriz será retornado; portanto
$FUNCNAME
, funcionará em casos simples para fornecer o nome da função imediatamente atual, mas também conterá todas as outras funções na pilha de chamadas. Por exemplo:Saída:
fonte
[0]
se está implícito acessando a variável não decorada?Eu uso
${FUNCNAME[0]}
para imprimir o nome da função atualfonte
Outro exemplo:
Saída:
fonte
A maneira mais simples de obter o nome da função (de dentro de uma função)
fonte
###
nas suas respostas.