A menos que esse processo esteja se baseando ou bifurcando, não seria devido ao atraso. Você pode verificar isso com um teste rápido:
# FOO=$(sleep 10; echo whee;); echo $FOO
whee
Este comando não é concluído até que sleep
termine a execução e a mensagem enviada para saída padrão seja armazenada com êxito na variável. A partir disso, podemos supor algumas coisas:
- A variável não é armazenada até que o comando seja concluído.
- STDOUT permanece conectado pela duração total do comando.
Neste ponto, uma das duas coisas está acontecendo aqui:
- A mensagem não está sendo gravada no STDOUT: provavelmente foi escrita em STDERR.
- Na verdade, o comando está sendo concluído. (backgrounded, bifurcou um subprocesso, etc.)
Geralmente o problema é o primeiro.