GNU/Linux >> Linux の 問題 >  >> Linux

複数のシェルスクリプト間で変数を共有しますか?

次のように、複数のシェルスクリプトを1つの大きなシェルスクリプトにまとめようとしています。

#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh

すべてのスクリプトは同じ変数varを共有します およびvar2 。個々のシェルスクリプトから変数定義を削除し、代わりに大きなシェルスクリプトに入れたかったので、変数の値を変更するときは、一度だけ行う必要があります。

しかし、私がそうするとき

#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

変数は参照$var1によって認識されません および$var2 個々のシェルスクリプトで。

以前に質問されたことがある場合は、お詫びします。私は一般的にスクリプトを作成するのが初めてで、何を検索すればよいかわかりませんでした。

また、

などの複数の変数入力を使用してスクリプトをループする方法を知っておくと便利です。
var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done

承認された回答:

メインスクリプト内でスクリプト1〜3を実行すると、それぞれが独自のサブシェル内で実行されます。そのため、親シェルで定義された変数を認識しません。 exportを使用する サブシェルで変数を使用できるようにするには:

#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh

別の方法(2番目の質問に関連)は、変数を位置パラメーターとしてスクリプトに渡すことです。

#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"

スクリプト1〜3内では、これらの変数は$1として使用できます。 および$2 それぞれ。


Linux
  1. シェル環境変数の設定| BASHシェル

  2. Bashシェルのカスタマイズ

  3. (bash)シェルの特別なパラメーター/変数はどれですか?

  1. Bashスクリプトでのエラー処理

  2. シェルスクリプトの変数の命名規則はありますか?

  3. 複数のシェルスクリプトで期間が1時間を超えているかどうかを確認するにはどうすればよいですか?

  1. シェル変数の関数?

  2. Bashスクリプト内で変数を使用する珍しい方法

  3. Bashシェルスクリプトで改行をエコーする方法