Bashスクリプトからファイルを複数回インポートする

Bashスクリプトからファイルを複数回インポートする

私は、ソフトウェアスイートの新しい展開をインストール/構成するための一連の作業を完了するために、別々の機能でうまくモジュール化された大規模な構成スクリプト(bash)を持っています。

私たちは、スクリプト全体を実行せずにこれらの関数のいくつかを呼び出すのが便利であることに気づきました。スクリプトは特定の関数を呼び出すパラメータを受け入れることができますが、スクリプトが1200行以上に増えたため、読みやすくするために親スクリプトで実行されるサブスクリプトに分割します。目標は、特定のコンテンツを再構成するために下付き文字を独立して実行できることです。

元の形式では、親スクリプト(ウィザードと呼ばれる)には、スクリプトの実行中に関数によって操作される複数のグローバル変数があります。スクリプトを分割するためにすべての構成値の永続ファイルを作成し、関数が永続ファイルのキーと値のペアを更新できるようにする関数を作成します(またはまだ存在しない場合は追加します)。

さて、それでは本当の質問です! ウィザードは親スクリプトであり、サブスクリプト(サブスクリプト)は呼び出し時に設定値を編集または追加できるため、ウィザードはウィザードのプロセス(必須)で次のように永続ファイルを複数回リソースできますか?調達は「上向き」に流れませんか?つまり、一部のソフトウェアを構成するウィザード機能が開始されるたびに、下付き文字が構成値を変更する場合は、まずこのファイルをインポートします。

関数がファイルをインポートするため、関数が完了すると、範囲(またはbash内の同等の用語)を超えてしまうとします。だからこれしてはいけない問題を起こしていますが、確かに知りたいです。どんなアドバイスもありがとうございます!

**編集:明確にすると、永続ファイルを使用する主な理由(そして私がそれを呼び出す理由)は、添え字の1つが個別に呼び出されたときにそのファイルを引き続き使用できるようにしたいからです。ウィザードがグローバル変数を設定しないと、独立して実行すると環境に関する重要な情報が失われます。

ベストアンサー1

関数が正しく機能するためには、必ず存在する必要がある変数を選択して、次のように使用してください。

[ -z "$REQUIREDVARIABLE" ] && . persistent-file

または

[ -z "$REQ1" ] || [ -z "$REQ2" ] || [ -z "$REQ3" ] && . persistent-file

これにより、ソーススクリプトは変数が存在する場合にのみ永続ファイルを読み込みます。いいえすでに環境にあります(「ウィザード」スクリプトから起動しても最新の状態を維持します)。


PS:私の考えでは、ホイールを再構築するのではなく、Unix / Linuxパッケージングツールを使用してプロダクションコードをプッシュする必要があります。第三者に配布する場合は、サポートするすべてのunix / linux配布用にパッケージ化してください。特定のオペレーティングシステムとバージョンを実行している仮想マシンを使用してソフトウェアパッケージを構築します。コードがオープンソースの場合、開発者の一人が役に立つか興味深いと判断すると、さまざまなディストリビューションなどで独自のパッケージやポートを維持します。

おすすめ記事