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 processes
       are not recorded, and that the user is potentially interested in
       both, so this problem is intrinsic to process IDs.
