Wie kann ich ein Skript parallel mit unterschiedlichen Argumenten ausführen und dabei Eingaben aus einer Datei übernehmen?

Wie kann ich ein Skript parallel mit unterschiedlichen Argumenten ausführen und dabei Eingaben aus einer Datei übernehmen?

Ich habe eine Datei abc.txtwie diese auf einem Linux-Rechner:

abc|yes|50c|1|pending
bcd|no|100c|2|pending
cde|yes|45c|3|pending
def|no|44c|3|pending

Ich muss einen Aufruf script1.kshmit dem 3. Feld als Parameter durchführen, alle Skripte parallel ausführen und wenn ein Skript fehlschlägt, sollte es das letzte Feld von „Ausstehend“ auf „FEHLERHAFT/ERFOLGREICH“ aktualisieren.

Ich habe die Zeile while read verwendet, um das 3. Feld aus der Datei in die Variable „var1“ zu extrahieren, das Skript auszuführen und das 5. FELD VON PENDING AUF ERFOLGREICH/FEHLERHAFT zu aktualisieren. Aber alle Skripte werden seriell und nicht parallel ausgeführt.

ksh script1.ksh 50c    
ksh script1.ksh 100c    
ksh script1.ksh 45c    
ksh script1.ksh 44c 

Antwort1

Führen Sie die Skripte einfach im Hintergrund aus:

while IFS='|' read -r  name yno arg rest; do 
    ksh script1.ksh "$arg" && 
    status=SUCCESS || status=FAILED &&
    sed -i "/^$name|/{s/pending/$status/}" file &
done < file

verwandte Informationen