有没有办法在bash中查看bash函数的定义?
例如,假设我定义了该函数 foobar
function foobar {
echo "I'm foobar"
}
Run Code Online (Sandbox Code Playgroud)
以后有没有办法获得foobar运行的代码?
$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"
Run Code Online (Sandbox Code Playgroud)
Ben*_*ier 332
使用type.如果foobar例如在您的~/.profile:
$ type foobar
foobar is a function
foobar {
echo "I'm foobar"
}
Run Code Online (Sandbox Code Playgroud)
这确实找出了什么foobar,如果它被定义为一个函数,它调用declare -fpmohandras解释.
要打印出函数体(即代码),请使用sed:
type foobar | sed '1,3d;$d'
Run Code Online (Sandbox Code Playgroud)
pmo*_*das 191
您可以使用declare在bash中显示函数的定义.例如:
declare -f foobar
Run Code Online (Sandbox Code Playgroud)
小智 7
set | sed -n '/^foobar ()/,/^}/p'
Run Code Online (Sandbox Code Playgroud)
这基本上打印了 set 命令中以函数名称 foobar () 开头并以 } 结尾的行
set | grep -A999 '^foobar ()' | grep -m1 -B999 '^}'
Run Code Online (Sandbox Code Playgroud)
foobar是函数名称.