A citação incorreta é o problema. "
não cita (e, qual é o problema aqui, não é removido!) se estiver contido em uma variável. Exceção: eval $text
Você deve atribuir os parâmetros a uma matriz e usar ls "${vars[@]}"
ou ls "$@"
.
Compare as duas chamadas:
set -x
ls -l
ls "-l"
set +x