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