A função sai, mas o conjunto de shell subiu um pipe da função para o código que lê stdout da função e depois coloca o resultado na variável pidthatwasreturned .
Este descritor de arquivo stdout , no entanto, é mantido aberto pelo comando sleep por 60 segundos.
Sua função redireciona a saída para o comando echo, mas não para o comando sleep e, por esse motivo, a atribuição da variável aguarda até que stdout do sleep seja fechado.
Se você trocar & e > /dev/null , ele funcionará no Bourne Shell e deverá funcionar em bash , a menos que haja um erro em bash .