Dennis lhe contou por que seu roteiro está falhando, mas eu gostaria de sugerir uma maneira mais fácil (e segura) de fazer isso. Parsing ls é quase sempre uma má idéia , ele pode facilmente quebrar nomes de arquivos com espaços ou novas linhas ou outros caracteres estranhos e não é portátil nas configurações LOCALE. Além disso, seu comando é muito complexo, envolvendo várias etapas. Por que não fazer tudo em find ?
DIR="/path/to/dirs"
EXCLUDELIST="subdir1,subdir2"
## Build the regular expression
EXCLUDE="${EXCLUDELIST//,/|.*}"
LIST=$(find "$DIR" -type d -regextype posix-awk -not -regex ".*$EXCLUDE.*")
A propósito, o seu script irá falhar à medida que você o escreve, porque você constrói o glob antes cd -ing em $DIR , então ele será construído em relação ao conteúdo do seu diretório atual.