
Ich habe eine Datei abc.txt
wie 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.ksh
mit 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