【发布时间】:2015-10-28 15:44:34
【问题描述】:
我需要将文件名列表放入一个数组中,让用户选择一个。
for i in $(ls -1 *.tgz*); do
optstring="$optstring \"$i\""
done
options=($optstring)
无论是否引用输入,这都有效。但是它们仍然被 for 循环分割成空格。
【问题讨论】:
-
optstring不是数组。还有Don't parse ls。只需在 glob 上使用循环。或者最好不要打扰循环。只需使用options=(*.tgz*)。另请参阅Bash FAQ 050,了解为什么不能将引号插入字符串并使其按您想要的方式工作。 -
你是对的,o=(.tgz) 有效,不知道 bash 做了那个。比弄乱 IFS 或其他一些复杂的方式要容易得多。谢谢!
标签: bash filenames spaces quoting