Si tengo un script Bash como:
#!/bin/bash
f() {
# echo function name, "f" in this case
}
¿Hay alguna forma de hacer esto? Esto podría usarse en mensajes de ayuda como
printf "Usage: %s: blah blah blah \n" $(basename $0) >&2;
Solo en este caso lo que quería no es $0
, que es el nombre del archivo de la secuencia de comandos.
FUNCNAME
matriz y otras variables de Bash: github.com/codeforester/base/blob/master/lib/stdlib.sh . Ver funcioneslog_debug_enter
ylog_debug_leave
en particular.Respuestas:
Se puede utilizar
${FUNCNAME[0]}
enbash
conseguir el nombre de la función.fuente
Del Manual de referencia de Bash :
Cuando se accede a las matrices bash sin un índice, se devolverá el primer elemento de la matriz, por
$FUNCNAME
lo que funcionará en casos simples para proporcionar el nombre de la función inmediatamente actual, pero también contiene todas las demás funciones en la pila de llamadas. Por ejemplo:Saldrá:
fuente
[0]
si está implícito al acceder a la variable no decorada?Yo uso
${FUNCNAME[0]}
para imprimir el nombre de la función actualfuente
Otro ejemplo:
Saldrá:
fuente
La forma más simple de obtener el nombre de la función (desde dentro de una función)
fuente
###
de tus respuestas.