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
に割り当てる必要はありません。簡単に書くこともできますが、位置パラメータを処理する方法を示すためにこれを書きました。file
source "$1"
答え2
あまりにも多くの変数を渡したくない場合は、下付き文字が呼び出される行に変数を設定することをお勧めします。
sed -i 's/ = /=/' "$file"
source "$file"
variable1=$variable1 variable2=$variable2 /path/to/another/script.sh