2017-10-12 2 views
4

In dem Shell-Skript unten möchte ich 2 Befehle parallel im Hintergrund ausführen, um den Prozess zu beschleunigen, zu warten, bis sie beendet sind und danach weitere Befehle ausführen.Kann ich denselben Variablennamen in der Bash für mehrere parallele Hintergrundprozesse verwenden?

Da ich denselben Variablennamen (DATASERVERNAME) in beiden Schleifen verwende, interferieren diese Variablen im Hintergrund? Sollte ich stattdessen verschiedene Variablennamen wie DATASERVERNAME_SYBASE, DATASERVERNAME_ORACLE in jeder Schleife verwenden?

#!/bin/bash 
while read DATASERVERNAME 
do 
    some commands here 
done < sybase_data_servers.txt & 

while read DATASERVERNAME 
do 
    some commands here 
done < oracle_data_servers.txt & 

wait 

some more commands here 

Antwort

4

Ihr Skript ist sicher, wie Sie durch ein kleines Experiment zeigen konnte:

#!/bin/sh -eu 
echo A > a 
echo B > b 

X=0 

while read X 
do 
    echo X=$X 
done < a & 
wait 

echo X=$X 

while read X 
do 
    echo X=$X 
done < b & 
wait 



echo X=$X 

Script Ausgabe:

X=A 
X=0 
X=B 
X=0 

Die backgrounded Schleifen laufen in verschiedenen Prozessen ($BASHPID sollte, dass auch reflektieren).

Verwandte Themen