Проблема заключается в ls. Он никогда не был предназначен для использования в сценариях. Кроме того, бессмысленно использовать ls в скриптах, потому что оболочка может сделать работу намного лучше, просто используя glob, см. Http://mywiki.wooledge.org/BashGuide/Patterns
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"*
И для общего способа поместить элементы списка с пробелами и другими символами в «переменную», используйте массивы 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[@]}"