複数のスクリプトで関数を再利用するには?

複数のスクリプトで関数を再利用するには?

Bashでは、いくつかのスクリプトで関数を再利用したい場合があります。すべてのスクリプトで関数定義を繰り返すのは悪いことではありませんか?では、良い事例はありますか?

次のアプローチは良い考えですか?

  • 関数の定義をmyfunction独自のスクリプトでラップしますdefine_myfunction.sh
  • 関数を呼び出すスクリプトでは、source define_myfunction.sh関数が呼び出されますmyfunction arg1 arg2 ...

ありがとうございます。

ベストアンサー1

で、bashそれは良いアプローチです。はい。

source「ライブラリ」スクリプトを使用またはインポートすると、.複数のスクリプト間で関数定義を共有する問題を適切に解決できます。 「ライブラリ」スクリプトで定義された関数にアクセスする必要があるすべてのスクリプトは、おそらくスクリプトの上部に必要なファイルを取得します。

これにより、単一の「ライブラリ」スクリプトから関連機能を収集し、その機能にアクセスできます。

まったく関係がないわけではありませんが、bashシェルは非対話型シェル(スクリプトなど)を実行すると自動的にファイルを取得することもできます。これは、スクリプトの特定の環境を設定するために使用できます。

BASH_ENV="$HOME/stuff/script.env" ./myscript

...wherescript.envでは、関数定義、シェルまたは環境変数の設定、他のファイルのインポートなど、すべての操作を実行できます。


一部のシェル(例ksh93:)には、これらの関数定義スクリプトを含めることができるディレクトリを指す環境変数があります。ではksh93変数をといいますFPATH。スクリプトには、ユーザーがコマンドライン(またはスクリプト内)に入力したときに自動的に検出される$FPATH/foo関数が含まれていますfoofoo私が知る限り、シェルにはbashこれらの特定の機能はありません。

他のシェルには異なる形式の「自動ロード」機能があります。

おすすめ記事