Bashから多数の変数をエクスポートする方法は? [コピー]

Bashから多数の変数をエクスポートする方法は? [コピー]

.sh私はBash 4.3.48(1)を使用しており、Shebangの下に約20個の変数を含むファイルがあります。このファイルには変数のみが含まれています。

パターンは次のとおりです。

x="1"
y="2"
...

これらすべての変数を次にエクスポートする必要があります。乾いた方法:たとえば、export20が20の変数に対応するのではなく、1がすべての変数に対応しますexport

最もエレガントな方法は何ですか(最も短く、最も効率的です)~へそのファイル?

サイクルfor?一つarray?おそらくこれよりも簡単なもの(一種のコレクション砂糖フレーズ)がありますか?

ベストアンサー1

シェルオプションを有効にするには、ファイルの上部set -a(またはそれに対応する項目)を使用します。次に、(該当する場合)ファイルの末尾に(or)を使用してシェルオプションを無効にします。set -o allexportallexportset +aset +o allexportallexport

シェルを有効にするallexportオプションを使用すると、次の効果が得られます(マニュアルを参照bash)。

生成または変更されたすべての変数または関数にはエクスポート属性が付与され、後続のコマンド環境にエクスポートするために表示されます。

set -aまたはに設定されているこのシェルオプションは次のとおりset -o allexportです。POSIXで定義sh(したがって、すべての同様のシェルで利用可能でなければなりません)

このオプションをオンにすると、出口割り当てが実行される各変数にプロパティを設定する必要があります。 [...]コマンドの割り当てがユーティリティ名の前にある場合出口ユーティリティが完了した後、プロパティは現在の実行環境で持続してはいけませんが、前述の特別な組み込みユーティリティの1つが原因で出口ビルドが完了した後も残るプロパティです。割り当てがコマンドのユーティリティ名の前にない場合getopts、または割り当てがORユーティリティ操作の結果であるread場合出口属性は、変数が設定解除されるまで持続する必要があります。

このオプションを有効にすると、設定された変数がエクスポートされます。つまり、環境変数に配置されます。通常どおり、これらの環境変数は、現在のシェル環境とそれ以降に作成されたすべての子プロセス環境で使用できます。

これはあなたがしなければならないことを意味します

  • このファイルをインポートします(このコマンドでシェルで使用するか.使用します)。またはsource
  • このファイルの変数にアクセスする必要があるプロセスを開始します。

おすすめ記事