Existe-t-il un moyen de visualiser une définition de la fonction bash dans bash?
Par exemple, disons que j'ai défini la fonction foobar
function foobar {
echo "I'm foobar"
}
Existe-t-il un moyen de récupérer plus tard le code que foobar
exécute?
$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"
Utilisez type
. Si foobar
est par exemple défini dans votre ~/.profile
:
$ type foobar
foobar is a function
foobar {
echo "I'm foobar"
}
Cela permet de savoir ce que foobar
était, et si elle était définie en tant que fonction, elle appelle declare -f
comme expliqué par pmohandras.
Pour n’imprimer que le corps de la fonction (c’est-à-dire le code), utilisez sed
:
type foobar | sed '1,3d;$d'
Vous pouvez afficher la définition d'une fonction dans bash en utilisant declare. Par exemple:
declare -f foobar
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
avec foobar étant le nom de la fonction.
set | sed -n '/^foobar ()/,/^}/p'
En gros, cela affiche les lignes de votre commande set en commençant par le nom de la fonction foobar () et en finissant par}