#!/bin/bash

update() {
    local i="$1"

    echo "./update.sh $i"
}

loop_func() {
    local d;

    for d in {2..40}; do
        update $d  1>&2 &
        echo $!
    done
}

pids=( $(loop_func) )
wait ${pids[@]} &>/dev/null
echo "d: $d"