假设我的文件夹中有以下文件
1.txt
2.txt
a.txt
b.txt
c.txt
如果我通过 glob 匹配这些文件以便处理它们,例如
for f in *;do echo $f;done
然后Bash
将根据手册页按字母顺序进行匹配。
但是,是否有一个 POSIX 标准来定义 glob 的匹配顺序?这样,我就可以在任何 shell 中依赖特定的匹配顺序,只要它符合 POSIX 标准。
答案1
是的,POSIX 要求排序。从POSIX 规范:
如果模式与任何现有文件名或路径名匹配,则该模式将被替换为这些文件名和路径名,根据当前区域设置的排序顺序进行排序。[重点补充]
为了确保结果一致,应指定区域设置。对于编程来说,此设置LC_COLLATE=C
是一种常见的选择。