zenity
当数据包含空格时, 我在加载列表对话框时遇到问题。
当列出的数据中没有空格时,这是直截了当的,
但我不知道空间嵌入文件名的简单/标准方法。
出于某种原因, $( ls -Q /tmp
) 的输出(引用输出)仍然
在每个空格处拆分文件名。输出中的引号和反斜杠
ls | sed
似乎被视为“最终字符串”而不是
“可读数据行”(如前两个数据行)......
我已经设法“解决这个问题”,但自我修改代码可能
不是最好的方法!(尽管它很有趣!:)
这是不起作用的方法
zenlist="/tmp/zen list"; touch "$zenlist"
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?" \
$(ls -Q -1 "$zenlist"* |sed 's/$/ \\/')
echo ""
# rm "$zenlist" # Uncomment this line to delete the file
这种方法有效,但必须有一种“常规”(更好)的方法!?
zenlist="/tmp/zen list"
echo "zenity --list --title='A single-column List' --width=600 --height=450 \\" >"$zenlist"
echo "--column='Spaces are allowed within \"q u o t e s\"' \\" >>"$zenlist"
echo "\"How much wood would a woodchuck chuck,\" \\" >>"$zenlist"
echo "\"if a wooodchuck could chuck wood?\" \\" >>"$zenlist"
(ls -Q "$zenlist"* |sed 's/$/ \\/') >>"$zenlist"
echo "" >>"$zenlist"
source "$zenlist"
# rm "$zenlist" # Uncomment this line to delete the file
问题是
ls
。它从未被设计用于脚本。此外,ls
在脚本中使用也是没有意义的,因为 shell 可以做得更好,只需使用 glob,请参阅http://mywiki.wooledge.org/BashGuide/Patterns对于将带有空格和其他字符的列表项放入“变量”的一般方法,请使用 bash 数组。
您可以将列表内容通过管道传输到 zenity,例如