From bash script how to tell when and process ends

I am trying to run multiple commands in a bash script but wait for them to complete

It looks something like this:

A &
B &
C &
D

      

Unfortunately, I don't know which of these processes will end first. But I need the whole script to terminate when done with all processes.

Since the newbie I tried:

(A &
B &
C &
D) && E

      

Unfortunately, E

only exec completes upon completion D

. I wish I could get E

after AD exec

Hopefully this summarizes the problem.

thank

+3


source to share


2 answers


A &
B &
C &
D &
wait
E

      

From the list help

:



wait: wait [-n] [id ...]
    Wait for job completion and return exit status.

    Waits for each process identified by an ID, which may be a process ID or a
    job specification, and reports its termination status.  If ID is not
    given, waits for all currently active child processes, and the return
    status is zero.   If ID is aa job specification, waits for all processes
    in that job pipeline.

    If the -n option is supplied, waits for the next job to terminate and
    returns its exit status.

    Exit Status:
    Returns the status of the last ID; fails if ID is invalid or an invalid
    option is given.
+6


source


wait(1)

- this is the canonical solution, but I've used the q & d solution in the past:



( A & B & C & D & ) | cat; E

      

0


source







All Articles