あるスクリプトから別のスクリプトにパラメータを渡す

あるスクリプトから別のスクリプトにパラメータを渡す

Bashスクリプトを使用していてファイルを受け取っているとしましょう。このようなファイルを取得したら、変数を他のスクリプトにどのように渡すことができますか?

sed -i 's/ = /=/' $file
source $file

ファイルに次のものが含まれているとします。

variable1=10
variable2=apple

これらのパラメータを別のスクリプトで使用するには、このパラメータを別のスクリプトに渡してから、現在のBashスクリプトでそのスクリプトを実行できますか?

ベストアンサー1

他の方法でパラメータを渡すのとほぼ同じ方法で渡します。

sed -i 's/ = /=/' "$file"
source "$file"

/path/to/another/script.sh "$variable1" "$variable2"

明らかに適切なコマンドラインスイッチを使用してください(または該当する場合は使用しません)。

上記のコードを使用している場合の値は、他のスクリプトで(最初のコマンドライン引数)ととして$variable1使用されます。$1$variable2$2

新しいスクリプトで元の名前を保持するには、位置パラメータを使用して名前を再割り当てする必要があります。例:

variable1=$1
variable2=$2

しかし、これは最も効率的なアプローチではない可能性があり、次の提案を使用する方が良いかもしれません。


実際には、最初のスクリプトの代わりに2番目のスクリプトからファイルをインポートしたいかもしれません。この場合、次の作業が必要になる場合があります。

スクリプト1.sh:

sed -i 's/ = /=/' "$file"
/path/to/another/script2.sh "$file"

Script2.sh:

file=$1
source "$file"
printf '%s\n' "$variable1"
printf '%s\n' "$variable2"

関連推薦書:3.4.1 位置パラメータ

注:変数$1に割り当てる必要はありません。簡単に書くこともできますが、位置パラメータを処理する方法を示すためにこれを書きました。filesource "$1"

おすすめ記事