Enquanto bash define $! para essa tarefa em segundo plano iniciada com exec 3> >(job) , você não pode esperar por ela ou fazer qualquer outra coisa que possa fazer com job & (como fg , bg ou referencia pelo número do trabalho). ksh93 (onde bash obteve esse recurso) ou zsh nem mesmo definiu $! .
Você pode fazer isso da maneira padrão e portátil:
{
{
do-something-interesting
} 3>&1 >&4 4>&- | { sleep 1; echo "$BASHPID: here"; } 4>&-
} 4>&1
echo "$BASHPID: there"
Em zsh (e é explicitamente documentado )
zmodload zsh/system
{
do-something-interesting
} 3> >(sleep 1; echo $sysparams[pid]: here)
echo $sysparams[pid]: there
também funcionaria, mas não em ksh93 ou bash .