一尘不染

bash for loop中的迭代顺序是否得到保证?

linux

假设我在bash中有一个for循环,如下所示:

for i in $MYDIR/*.jar
do
    # do something with files
done

是否保证了迭代的顺序,即循环将始终以相同的顺序处理文件吗?如果可以保证,顺序是否按字母顺序?


阅读 212

收藏
2020-06-07

共1个答案

一尘不染

根据bash手册页

路径名扩展

拆分单词后,除非已设置-f选项,否则bash会在每个单词中扫描字符*
、?和[。如果出现这些字符之一,则将该单词视为一个模式,并替换为与该模式匹配的文件名按字母顺序排列的列表(请参见下面的“模式匹配”)。

因此,由于全局扩展规则,文件将按 字母顺序 处理(取决于您的语言环境,请参阅注释)。

2020-06-07