Digamos que eu tenha um loop for abaixo:
for i in /apps/textfiles/*.txt
do
do something
done
Agora digamos que tenho 50 arquivos dentro/apps/arquivos de texto/
Em que ordem os arquivos serão selecionados?
Responder1
A expansão do nome do arquivo no Bash está classificandoalfabeticamente.
Bash verifica cada palavra em busca dos caracteres '
*
', '?
' e '[
'. Se um desses caracteres aparecer, então a palavra é considerada um padrão e substituída por uma lista ordenada alfabeticamente de nomes de arquivos que correspondem ao padrão [...].
Não faz diferença aqui que seu contexto global faça parte do for
loop.
Observe quealfabéticoa classificação ainda obedece à ordem de agrupamento definida peloLC_COLLATE
variável:
LC_COLLATE
Esta variável determina a ordem de agrupamento usada ao classificar os resultados da expansão de nome de arquivo e determina o comportamento de expressões de intervalo, classes de equivalência e sequências de agrupamento na expansão de nome de arquivo e correspondência de padrões (consulte Expansão de nome de arquivo).