Я использовал следующий скрипт bash для параллельного запуска нескольких команд. На самом деле он ждет, пока все параллельные команды завершатся, а затем продолжит работу. Теперь я хочу изменить этот bash таким образом, чтобы он ожидал только первого «уничтожения», и не имеет значения, что это уничтожение происходит от выполнения какой команды. Любое предложение для этого?
for cmd in "$@"; do {
echo "Process \"$cmd\" started";
$cmd & pid=$!
PID_LIST+=" $pid";
} done
trap "kill $PID_LIST" SIGINT
echo "Parallel processes have started";
wait $PID_LIST
echo
echo "All processes have completed";
Вы можете обнаружить, что подпроцесс завершился, перехватывая сигнал SIGCHLD.