Відповіді:
Використовуйте 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 -f foobar
typeset -f
function
визначення, тому вам не доведеться розбиратися, якщо це те, що ви хочете.
set | sed -n '/^foobar ()/,/^}/p'
Це в основному друкує рядки з набору команд, починаючи з імені функції foobar () і закінчуючи на}
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
при цьому foobar є назвою функції.