¿Puede bash mostrar la definición de una función?

Resuelto k107 asked hace 13 años • 4 respuestas

¿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 foobarse ejecuta?

$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"
k107 avatar Aug 03 '11 01:08 k107
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é foobarera y si se definió como una función que llama declare -fcomo 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'
Benjamin Bannier avatar Aug 02 '2011 18:08 Benjamin Bannier

Puede mostrar la definición de una función en bash usando declarar. Por ejemplo:

declare -f foobar
pmohandas avatar Aug 02 '2011 18:08 pmohandas
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 }

Jurgen van der Mark avatar Jun 29 '2016 14:06 Jurgen van der Mark