Відповіді:
Використовуйте 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 є назвою функції.