스크립트가 있습니다
for i in 1 2 3 4; do
do_something $i &
done
호출하면 do_something
다른 모든 항목이 종료되기 전에 종료됩니다. 내가 찾은이 문제다양한 답변이 있습니다.
편집하다: help wait
말해 주세요
ID가 제공되지 않으면 현재 활성화된 모든 하위 프로세스가 대기되고 상태 0이 반환됩니다.
wait
마지막에 하나만 추가 하면 충분합니까 ?
답변1
예, wait
모든 백그라운드 작업이 종료될 때까지 기다리려면 마지막에 매개변수 없이 단일 명령을 사용하는 것으로 충분합니다.
서브셸에서 시작된 백그라운드 작업은 해당 작업을 시작한 동일한 서브셸에서 기다려야 합니다. 표시되는 코드에는 그러한 인스턴스가 없습니다.
또한 참고하시기 바랍니다당신이 링크한 질문에 대한 질문종료 상태 확인백그라운드 작업. 이것회의각 백그라운드 작업에 대해 한 번씩 실행 해야 합니다 wait
(작업의 PID를 인수로 사용).
답변2
제 생각에는 매개변수 없이 한 번만 기다려도 충분하지만 이는 좋은 습관이 아닙니다(기본 동작에 의존). 각 호출에서 반환된 PID를 수집하고 해당 PID를 명시적으로 기다립니다.