次のように、複数のシェルスクリプトを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
それぞれ。