是否有一种在bash中查看bash函数定义的方法?
例如,我定义了函数foobar
foobar
function foobar { echo "I'm foobar" }
是否有办法在以后获得foobar运行的代码?
$ # non-working pseudocode $ echo $foobar echo "I'm foobar"
可以使用declare在bash中显示函数的定义。例如:
declare -f foobar
使用type。如果foobar在你的~/.profile中定义:
type
~/.profile
$ type foobar foobar is a function foobar { echo "I'm foobar" }
这确实会找出foobar是什么,如果它被定义为一个函数,它会调用declare -f,如pmohandras所解释的那样。
declare -f
要打印出函数体(即代码),请使用sed:
sed
type foobar | sed '1,3d;$d'
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
foobar是函数名。
set | sed -n '/^foobar ()/,/^}/p'
这基本上打印了set命令中以函数名foobar()开始,以}结束的行。