jobs echo $? echo wait-for-pid sleep 10 & wait $! echo wait-errors wait 1-1 wait -- -4 echo wait-for-background-pids sleep 5 & sleep 8 & wait echo async list wait-for-background-pids sleep 5 & sleep 8 & wait echo async list wait for child sleep 5 & echo forked wait echo wait-when-no-children wait set -m echo wait-for-job sleep 5 & wait %2 # this should be a no-such-job error echo $? wait %1 echo async list wait-for-job sleep 5 & echo forked wait %1 echo fg-bg 1 sleep 5 & %1 echo fg-bg 2 sleep 5 & fg %% echo fg-bg 3 sleep 5 & fg %s echo fg-bg 4 sleep 5 & fg %?ee # these next two are error cases echo fg-bg 5 sleep 15 & fg %2 # this should be a no-such-job error bg %1 # this should be a `bg background job?' error wait # these may someday mean to start the jobs, but not print the line # describing the status, but for now they are errors echo fg-bg 6 sleep 5 & fg -s %1 bg -s %1 wait # someday this may mean to disown all running jobs, but for now it is # an error disown -r # this is an error disown %1 echo wait-for-non-child wait 1 echo $? exit 1 | exit 2 | exit 3 echo $? -- ${PIPESTATUS[@]} -- ${PIPESTATUS[0]} - ${PIPESTATUS[1]} - ${PIPESTATUS[2]} sleep 300 & sleep 350 & sleep 400 & jobs echo running jobs: jobs -r # should be an error kill -n 1 %4 kill -STOP %2 sleep 5 # give time for the shell to get the stop notification echo after kill -STOP echo running jobs: jobs -r echo stopped jobs: jobs -s disown %1 echo after disown jobs echo running jobs: jobs -r echo stopped jobs: jobs -s kill -s CONT %2 echo after kill -s CONT echo running jobs: jobs -r echo stopped jobs: jobs -s kill -STOP %3 sleep 5 # give time for the shell to get the stop notification echo after kill -STOP, backgrounding %3: bg %3 disown -h %2 # make sure the killed processes don't cause a message exec 5>&2 exec 2>/dev/null echo killing... kill -n 9 %2 %3 wait # make sure we reap the processes while stderr is still redirected echo done exec 2>&5 sleep 10 & kill -STOP %1 sleep 5 # give time for the shell to get the stop notification echo after KILL -STOP, foregrounding %1 fg %1 echo done