¿Puede bash mostrar la definición de una función?
¿Hay alguna manera de ver la definición de una función bash en bash?
Por ejemplo, digamos que definí la funciónfoobar
function foobar {
echo "I'm foobar"
}
¿Hay alguna forma de obtener posteriormente el código que foobar
se ejecuta?
$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"
Aceptado
Usar type
. Si foobar
, por ejemplo, está definido en su ~/.profile
:
$ type foobar
foobar is a function
foobar {
echo "I'm foobar"
}
Esto descubre qué foobar
era y si se definió como una función que llama declare -f
como lo explica pmohandras.
Para imprimir solo el cuerpo de la función (es decir, el código), utilice sed
:
type foobar | sed '1,3d;$d'
Puede mostrar la definición de una función en bash usando declarar. Por ejemplo:
declare -f foobar
set | sed -n '/^foobar ()/,/^}/p'
Básicamente, esto imprime las líneas de su comando set comenzando con el nombre de la función foobar () y terminando con }