複数のBashスクリプトで変数を交差しますか?

複数のBashスクリプトで変数を交差しますか?

2つのbashスクリプトが同時に実行されており、2つを除いて同じです。

他の設定に加えて、次の項目を実行します。

ssh ${target_server} "bash -s" < ${target_script} > ${home_dir}/logs/${instance_name}.log 2> ${home_dir}/logs/${instance_name}.err &

2つのスクリプトの唯一の違いは、${target_server}IPアドレスと変数に渡される変数です${instance_name}

拡張後の様子は次のとおりです。

local_script1から:

target_script="target_script1.sh"
ssh 10.1.2.3 "bash -s" < ${target_script} > /home/user/logs/script1.log 2> /home/user/logs/script1.err &

ローカルスクリプト2から:

target_script="target_script2.sh"
ssh 10.1.2.4 "bash -s" < ${target_script} > /home/user/logs/script2.log 2> /home/user/logs/script2.err &    

target_scripts は、関連するサーバーのパスに関連するいくつかの主要な変数を除いて、同じ2つの別々のbashファイルです。

別のサーバーで実行されていますが、設定された変数にいくつかの交差がある可能性がありますか?

たとえば、入るとピックアップにmyVar=1なりますか?target_script1target_script2

または(私は正しく考えていますか?)各サーバーが最初に「リモート」サーバーへのSSH接続を開くため、変数はローカルサーバーではなくリモートサーバーにのみ存在します。

答え1

いいえ、あるスクリプトに設定された変数は別のスクリプトには表示されません。どちらのスクリプトも別々の環境で実行されます。

例:

bash -c 'a=1; echo $a'

bash -c 'echo $a'

2回目の電話はbash決して一度12行が実行されている順序と同時に実行されているかどうかに関係なく、aを出力として書き込みます。

12行目が出力される唯一の時間は、環境変数(エクスポートされたシェル変数)が呼び出される環境で呼び出されるときです。a

関連情報