a.shfname
という名前のファイルでbash関数を定義します。
fname(){
echo "Foo"
}
このように関数を含めることができます。
source a.sh
その後fname
、シェルでを呼び出すことができます。含まれているすべての機能を表示する方法があるのだろうか。
ありがとう!
宣言されたすべての関数と本体を一覧表示するには、次のコマンドを実行できます。
set
また
declare -f
関数名のみが必要な場合:
declare -f -F
また
declare -f -F | cut -d " " -f3
そしてhttp://wiki.bash-hackers.org/scripting/obsoleteからtypeset
:
これは上記と密接に関連しており、多くの場合、一緒に使用する必要があります。タイプセットは主にkshとの互換性のために存在しますが、Bashでは「非推奨」とマークされています(私はこれに完全には同意しませんが)。将来の互換性は保証できないため、これはある程度理にかなっています。互換性を得るには、他のシェルの非POSIX機能とその違いを理解する必要があります。タイプセットの代わりにdeclareを使用すると、「bashのみ」であるという意図が強調され、他のすべての場所で確実に機能しなくなります(運が良ければzshを除く)。この問題は、Dashとローカルビルトインに対するDebianポリシー要件によってさらに複雑になりますが、それ自体はBashや他のシェルと完全には互換性がありません。
typeset -f
に関するドキュメントtypeset