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
関数が含まれていますfoo
。foo
私が知る限り、シェルにはbash
これらの特定の機能はありません。
他のシェルには異なる形式の「自動ロード」機能があります。