有沒有辦法在bash中查看bash函數的定義?bash可以顯示一個函數的定義嗎?
例如,假設我定義的函數foobar
function foobar {
echo "I'm foobar"
}
有什麼辦法後得到的代碼是foobar
運行?
$ # non-working pseudocode
$ echo $foobar
echo "I'm foobar"
有沒有辦法在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
是,如果它被定義爲一個功能,它通過pmohandras解釋稱declare -f
。
set | grep -A999 '^foobar()' | grep -m1 -B999 '^}'
其中foobar是函數名稱。
問題:只會顯示到第一個「}」,當定義包含確實Bash確實允許的「{...}」嵌套時,這不是所有的。 –
如果函數包含一個包含花括號模式的here-doc/here-string,也可能失敗 – Cheetah
set | sed -n '/^foobar()/,/^}/p'
這基本上打印從您所設定的命令和函數的名稱foobar的(開始),並結束該行}
這在zsh中不起作用。 declare -f func幾乎無處不在 – sjsupersumit