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は関数名です。
問題:最初の "}"までしか表示されません。defintionに "{...}"のネストが含まれていれば、すべてではありません。 –
関数にcurly-braceパターンを含むhere-doc/here-stringが含まれている場合にも失敗することがあります – Cheetah
set | sed -n '/^foobar()/,/^}/p'
これは、基本的には(関数名foobarに始まるあなたのsetコマンドから行を出力)で終わる}
これはzshでは機能しません。宣言-f funcはほとんどどこでも動作します – sjsupersumit