Então você tem algo assim:
$ foo='my dir'
$ ls $foo
my: no file or directory found
dir: no file or directory found
Em vez disso, tente isto:
$ foo='my dir'
$ ls "$foo"
Ou melhor ainda:
$ ls "${foo}"
Ambos os métodos protegem o caractere [: space:] de ser interpretado pelo shell e garante que ele seja lido como um caractere [: space:], não o ponto de interrupção de um comando.
É um bom hábito entrar em contato ao escrever scripts de shell!