O problema é ls
. Ele nunca foi projetado para ser usado em scripts. Além disso, também é inútil usar ls
em scripts, porque o shell pode fazer o trabalho muito melhor, simplesmente usando um glob, veja link
zenlist="/tmp/zen list"; touch "$zenlist" "$zenlist"$'\neven with a newline'
zenity --list --title='A single-column List' --width=600 --height=450 \
--column='Spaces are allowed within "q u o t e s"' \
"How much wood would a woodchuck chuck," \
"if a wooodchuck could chuck wood?" \
"$zenlist"*
E para uma maneira geral de colocar itens de lista com espaços e outros caracteres em uma "variável", use matrizes bash.
# assign some items to start with
items=( "How much wood would a woodchuck chuck," "if a wooodchuck could chuck wood?" )
# append some items
items+=( "$zenlist"* )
zenity --list --title='A single-column List' --width=600 --height=450 \
--column='Spaces are allowed within "q u o t e s"' "${items[@]}"