複数のシェルスクリプトで変数を共有する

複数のシェルスクリプトで変数を共有する

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

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

すべてのスクリプトは同じ変数を共有しますvarvar2個々のシェルスクリプトから変数定義を削除し、それを大きなシェルスクリプトに入れて変数値を変更するときに一度だけ実行できます。

しかし、私がするとき

#!/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

デフォルトスクリプトでスクリプト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スクリプト1-3では、これらの変数はそれぞれおよびとして使用できます$2

答え2

私はこれを試しました:

環境設定

var1="1"
var2="2"

スクリプトファイル

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

スクリプト*.sh

source setup_env
...

関連情報