#!/bin/bash
command1 &
command2 &
command3 &
wait
command4
wait
(без жодних аргументів) буде чекати, поки всі фонові процеси не завершаться.
Повний опис wait
в bash
керівництві:
wait [-n] [n ...]
Зачекайте кожного зазначеного дочірнього процесу та поверніть його статус припинення. Кожен n
може бути ідентифікатором процесу або специфікацією завдання; якщо задана специфікація роботи, всі процеси в трубопроводі цієї роботи чекають. Якщо n
не вказано, очікуються всі поточно активні дочірні процеси, а стан повернення дорівнює нулю. Якщо
-n
опція надана, wait
чекає припинення будь-якої роботи і повертає свій вихідний статус. Якщо n
вказано неіснуючий процес або завдання, стан повернення - 127. В іншому випадку стан повернення - це вихід виходу останнього очікуваного процесу або завдання.
PID1=$!
а потім зачекати всіх із нимиwait "$PID1" "$PID2" "$PID3"
. Це трохи складніше, але вийде, якщо в процесі є інші діти, яких ви не хочете чекати.