Эта улучшенная строка должна исправить первую часть вашего скрипта:
process_list+=($pid $pid_1)
И это должна быть вторая часть. Обратите внимание, что это не было проверено.
for job in ${process_list[@]}
do
ps -ho pid | >/dev/null grep $job && {
echo "$job is running"
wait $job # this command should be ok now
}
done
ps -ho pid
создает список запущенных процессов ( -o pid
) без строки заголовка ( -h
).
Он пересылает ( |
) этот список в grep
grep
ищет $ job
и, если находит его ( &&
) запускается блок команд ( {echo ...}
)