wait [ job ... ]
       Wait  for  the specified jobs or processes.  If job is not given
       then all currently active child processes are waited for.   Each
       job can be either a job specification or the process ID of a job
       in the job table.  The exit status from this command is that  of
       the job waited for.  If job represents an unknown job or process
       ID, a warning is printed (unless the  POSIX_BUILTINS  option  is
       set) and the exit status is 127.

       It  is  possible  to  wait  for  recent  processes (specified by
       process ID, not by job) that were running in the background even
       if  the  process  has  exited.  Typically the process ID will be
       recorded by capturing the value of the variable  $!  immediately
       after  the  process  has  been started.  There is a limit on the
       number of process IDs remembered by the shell; this is given  by
       the value of the system configuration parameter CHILD_MAX.  When
       this limit is reached, older process IDs  are  discarded,  least
       recently started processes first.

       Note  there  is  no  protection against the process ID wrapping,
       i.e. if the wait is not executed soon enough there is  a  chance
       the  process  waited  for  is the wrong one.  A conflict implies
       both process IDs have been generated by the shell, as other pro-
       cesses are not recorded, and that the user is potentially inter-
       ested in both, so this problem is intrinsic to process IDs.
