Eu acredito que o problema que você está enfrentando é que você está esperando que a variável global $workspaces seja definida como resultado dessa função. No entanto, você não pode definir uma variável global (em termos de shell, export ) no shell atual de uma subshell. E a única maneira de executar um comando em segundo plano é executá-lo em uma subcamada. Portanto, executar declare ou export como parte de um comando de segundo plano não definirá essa variável no shell atual, o que parece ser o que você está tentando alcançar.