aguarde processo filho, mas obtenha o erro: 'pid não é filho deste shell'

Eu escrevo um script para obter dados do HDFS paralelo, então espero esses processos filhos em um loop for, mas às vezes retorna "pid não é filho desse shell". às vezes, funciona bem - é tão confuso. Eu uso "jobs -l" para mostrar todos os jobs executados em segundo plano. Tenho certeza de que esses pid são o processo filho do processo de shell e uso "ps aux" para garantir que esses pids sejam atribuídos a outro processo. Aqui está o meu scrip

PID=()
FILE=()
let serial=0

while read index_tar
do
        echo $index_tar | grep index > /dev/null 2>&1

        if [[ $? -ne 0 ]]
        then
                continue
        fi

        suffix=`printf '%03d' $serial`
        mkdir input/output_$suffix
        $HADOOP_HOME/bin/hadoop fs -cat $index_tar | tar zxf - -C input/output_$suffix \
                && mv input/output_$suffix/index_* input/output_$suffix/index &

        PID[$serial]=$!
        FILE[$serial]=$index_tar

        let serial++

done < file.list

for((i=0;i<$serial;i++))
do
        wait ${PID[$i]}

        if [[ $? -ne 0 ]]
        then
                LOG "get ${FILE[$i]} failed, PID:${PID[$i]}"
                exit -1
        else
                LOG "get ${FILE[$i]} success, PID:${PID[$i]}"
        fi
done

questionAnswers(2)

yourAnswerToTheQuestion