假设我有一个下面的 for in 循环:
for i in /apps/textfiles/*.txt
do
do something
done
现在假设我里面有 50 个文件/应用程序/文本文件/
将以什么顺序选择文件?
答案1
Bash 中的文件名扩展是排序按字母顺序。
Bash 扫描每个单词中的字符“
*
”、“?
”和“[
”。如果出现这些字符之一,则该单词被视为一种模式,并替换为与模式匹配的按字母顺序排序的文件名列表 [...]。
通配上下文是循环的一部分,这并没有什么区别for
。
注意按字母顺序排列的排序仍然遵循由LC_COLLATE
多变的:
LC_COLLATE
此变量确定对文件名扩展结果进行排序时使用的排序规则,并确定范围表达式、等价类以及文件名扩展和模式匹配中的排序序列的行为(请参阅文件名扩展)。