#! /bin/bash i=0 while [ $i -lt $1 ] do /bin/sh -c "sleep 4; exit 0" & rv=$? pid=$! eval bg_pid_$i=$pid echo $$: Job $i: pid is $pid rv=$rv i=$((i + 1)) done i=0 while [ $i -lt $1 ] do eval wpid=\$bg_pid_$i echo Waiting for job $i '('pid $wpid')' wait $wpid rv=$? echo Return value is $rv i=$((i + 1)) done