Ответы:
Использование type. foobarНапример, если это определено в вашем ~/.profile:
$ type foobar
foobar is a function
foobar {
echo "I'm foobar"
}
Это выясняет, что foobarбыло, и если это было определено как функция, которую она вызывает, declare -fкак объяснено pmohandras.
Чтобы распечатать только тело функции (то есть код), используйте sed:
type foobar | sed '1,3d;$d'
Вы можете отобразить определение функции в bash с помощью команды Declare. Например:
declare -f foobar
typeset -f
functionопределение, так что вам не нужно анализировать, если это то, что вы хотите.
set | sed -n '/^foobar ()/,/^}/p'
Это в основном печатает строки из вашей команды set, начиная с имени функции foobar () и заканчивая}
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
с foobar, являющимся именем функции.