Si j'ai un script Bash comme:
#!/bin/bash
f() {
# echo function name, "f" in this case
}
Y a-t-il un moyen de faire ça? Cela pourrait être utilisé dans les messages d'aide tels que
printf "Usage: %s: blah blah blah \n" $(basename $0) >&2;
Ce n'est que dans ce cas que ce que je voulais $0
, ce n'est pas le nom de fichier du script.
FUNCNAME
tableau et d'autres variables Bash: github.com/codeforester/base/blob/master/lib/stdlib.sh . Voir les fonctionslog_debug_enter
etlog_debug_leave
en particulier.Réponses:
Vous pouvez utiliser
${FUNCNAME[0]}
inbash
pour obtenir le nom de la fonction.la source
À partir du manuel de référence Bash :
Lorsque les tableaux bash sont accédés sans index, le premier élément du tableau sera retourné, donc
$FUNCNAME
fonctionnera dans des cas simples pour fournir le nom de la fonction immédiatement courante, mais il contient également toutes les autres fonctions de la pile d'appels. Par exemple:Sortira:
la source
[0]
si c'est implicite en accédant à la variable non décorée?J'utilise
${FUNCNAME[0]}
pour imprimer le nom de la fonction actuellela source
Un autre exemple:
Sortira:
la source
Le moyen le plus simple d'obtenir le nom de la fonction (depuis l'intérieur d'une fonction)
la source
###
dans vos réponses.