3

たとえば、メイン シェル プログラムmain.shがあり、別のサブシェル プログラムがありsub.shます。変数 var をサブシェルに渡したいのですが、コマンドライン引数を使用したくありません。コード例は次のとおりです。

#In main.sh
a=1
./sub.sh

#In sub.sh
echo $a

出力を見たい:1

この質問が奇妙であることは承知していますが、この機能は私のニーズに最適です。sub.sh実際のプログラムには渡す変数がたくさんあるため、ソースを取得できません...ありがとう!

編集:sub.shバックグラウンドで実行して10時間かかり、sub.sh別の変数に対してフォアグラウンドで別のものを実行したい場合はどうすればよいbですか?

4

2 に答える 2

3

変数をエクスポートするだけですa

a=1
export a
./sub.sh

これによりa、その後に実行されるコマンドの環境になります

于 2013-10-25T21:05:18.543 に答える
3

余分な改行があるだけです:

#In main.sh
a=1 ./sub.sh

これは実際には 1_CR と同じ答えですがsub.sh、現在の環境を変更しsub.shて継承するのではなく、環境に値を渡す手法を示しています。

これは環境のプロセスごとの変更であるため、必要に応じて繰り返すことができます。

a=1 ./sub.sh &
a=3 b=9 ./sub.sh &

の各インスタンスはsub.shの異なる値を認識しa、2 番目のインスタンスも の値を認識しますb

于 2013-10-25T21:07:44.130 に答える