bash能显示一个函数的定义吗?
有没有办法在bash中查看bash函数的定义?
例如,说我定义了foobar
函数
function foobar { echo "I'm foobar" }
有没有什么办法来获得foobar
运行的代码?
$ # non-working pseudocode $ echo $foobar echo "I'm foobar"
使用type
。 如果foobar
是例如在你的~/.profile
定义的:
$ type foobar foobar is a function foobar { echo "I'm foobar" }
这确实找出foobar
是什么,如果它被定义为一个函数,它会调用declare -f
如pmohandras所解释的。
你可以使用declare在bash中显示一个函数的定义。 例如:
declare -f foobar
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
foobar是函数的名字。
set | sed -n '/^foobar ()/,/^}/p'
这基本上打印从您的设置命令开始的函数名称foobar()和结束于}