A quebra nos espaços ocorre no comando read , mas você não precisa disso de qualquer maneira. Além disso, sua lógica if é falha. Só funcionaria se my_dir fosse igual a . , caso contrário, find não geraria . em sua saída. Finalmente, você afirma no seu exemplo, que você quer apenas os nomes dos diretórios, não o caminho completo, mas da maneira como você o escreveu, find passaria o caminho para o stdout.
Aqui está uma solução mais fácil:
find "$my_dir" -maxdepth 1 -type d -exec basename {} \;|tail -n +2
O truque aqui é o comando tail . Você deseja excluir o diretório inicial ( $my_dir ) da saída. find sempre gera este diretório primeiro (a menos que você requeira explicitamente o primeiro sentido de profundidade), então você simplesmente precisa descartar a primeira linha da saída resultante.