De a página man bash , minha ênfase em itálico:
wait
wait [-n] [jobspec or pid …]
Wait until the child process specified by each process ID pid or job specification jobspec exits and return the exit status of the last command waited for.
Acho que você talvez tenha perdido o símbolo de fundo &
:
sleep 5 ;exit5=$? & PID5=$!;wait $PID5; echo $?; echo $exit5
Diz para dormir por 5 segundos; uma vez feito isso, defina o código de saída (zero) em exit5
como um processo em segundo plano; defina o ID do trabalho dessa designação em PID5
; então espere essa tarefa terminar; a atribuição foi concluída com sucesso, então echo
mostra que zero; então o último echo
mostra uma linha em branco, como o processo em segundo plano (subshell) saiu, deixando a variável exit5
não atribuída (vazia).
Talvez seja essa a situação para a qual você estava indo?
sleep 5 & PID5=$!; wait $PID5; exit5=$?; echo $exit5
Coloque sleep 5
em segundo plano, salvando seu PID em PID5
. Aguarde a saída do processo, capture seu código de retorno em exit5
e, em seguida, faça eco do código de retorno salvo.