Ich habe dieses Code-Schnipsel, um make t1
, make t2
und make t3
parallel zu starten.Parallelen Prozess ausführen und alle beenden, wenn einer fehlschlägt
Gibt es eine Möglichkeit, den Rest der make-Prozesse zu beenden, wenn einer fehlschlägt? Wenn beispielsweise make t2
fehlschlägt, sollte das Skript zwei andere laufende (make t1
und make t3
) ausführen und herauskommen.
for ARG in '"t1" "t2" "t3"'
do
cd ${ARG}
make ${ARG} & pid=$!
PID_LIST+=" $pid";
cd -
done
trap "kill $PID_LIST" SIGINT
echo "Parallel makes have started $PID_LIST"
wait $PID_LIST
Warum Sie 'eval' verwenden? 'für arg in" t1 "t2" t3 "; mach "$ arg" & pids + = ($!); done' – chepner
Danke, werde es in meinem Code ändern, wie Sie vorgeschlagen haben – rodee