比方说,我有一个在bash的循环看起来像这样:bash for循环中的迭代次序是否有保证?
for i in $MYDIR/*.jar
do
# do something with files
done
是保证迭代的顺序,即会在循环总是在相同的顺序处理的文件?如果有保证,订单是否按字母顺序排列?
比方说,我有一个在bash的循环看起来像这样:bash for循环中的迭代次序是否有保证?
for i in $MYDIR/*.jar
do
# do something with files
done
是保证迭代的顺序,即会在循环总是在相同的顺序处理的文件?如果有保证,订单是否按字母顺序排列?
路径名扩展
字分开后,除非-f选项已定,庆典扫描 每个字的字符*,和[?如果出现其中一个字符 ,则该单词被视为一个模式,并替换为与该模式匹配的按字母顺序排列的文件名列表(请参见下面的 模式匹配)。
因此,这些文件将在字母顺序(这取决于您的语言环境,见注释)由于通配符扩展规则进行处理。
如果您的语言环境为C,则只能使用ASCII顺序。“按字母顺序排序”通常不表示ASCII。 –
...例如,一些语言环境具有AaBbCc的整理顺序...对于其他人,它是ABC ... abc ... –
@CharlesDuffy谢谢,我编辑了我的答案 –
我相信这适用于:http://serverfault.com/a/122743/1239 –
顺便说一句,这不是一个关于循环的问题,这是一个关于globs的问题。因为我在9 5 3;做回声“$我”;完成“将按照该顺序进行操作。 –
你在问错误的问题。这不是扩展你的*的循环。 shell将首先将* .jar扩展为文件列表,然后循环将遍历该文件列表。 – hymie