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
.