Variablen-Crossover in mehreren Bash-Skripten?

Variablen-Crossover in mehreren Bash-Skripten?

Bei mir laufen zwei Bash-Skripte gleichzeitig, die bis auf zwei Dinge identisch sind.

Abgesehen von einigen anderen Setup-Teilen führen sie den folgenden Eintrag aus:

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

Die einzigen Unterschiede zwischen den beiden Skripten sind die an die Variable übergebene IP-Adresse ${target_server}und die ${instance_name}Variable selbst.

Ausgedehnt sähe es etwa so aus:

In 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 &

In local_script2:

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 &    

Bei den target_scripts handelt es sich wiederum um zwei separate Bash-Dateien, die bis auf einige Schlüsselvariablen, die sich auf Pfade auf dem jeweiligen Server beziehen, identisch sind.

Ist es möglich, dass es zu Überschneidungen bei den festgelegten Variablen kommt, obwohl sie auf unterschiedlichen Servern ausgeführt werden?

zB wenn ich es einsetze, myVar=1könnte target_script1es dann abgeholt werden target_script2?

Oder (liege ich mit der Annahme richtig) liegt es daran, dass die Variablen NUR auf den Remote-Servern existieren und nicht auf dem lokalen, weil jeder zuerst eine SSH-Verbindung zum „Remote“-Server öffnet.

Antwort1

Nein, in einem Skript festgelegte Variablen sind in einem anderen Skript nicht sichtbar. Beide Skripte werden in ihren eigenen separaten Umgebungen ausgeführt.

Beispiel:

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

bash -c 'echo $a'

Die zweite Anrufung des bashWillens wird niemalsimmerSchreiben Sie ein 1als Ausgabe, unabhängig davon, in welcher Reihenfolge die beiden Zeilen ausgeführt werden oder ob sie gleichzeitig ausgeführt werden.

Die zweite Zeile würde nur dann ausgegeben, wenn in der aufrufenden Umgebung 1eine Umgebungsvariable (exportierte Shell-Variable) aufgerufen wird .a

verwandte Informationen