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.
