Допустим, у меня есть следующий цикл for in:
for i in /apps/textfiles/*.txt
do
do something
done
Теперь предположим, что у меня внутри 50 файлов./приложения/текстовые файлы/
В каком порядке будут выбираться файлы?
решение1
Расширение имени файла в Bash — это сортировкав алфавитном порядке.
Bash сканирует каждое слово на наличие символов '
*
', '?
' и '[
'. Если появляется один из этих символов, то слово рассматривается как шаблон и заменяется отсортированным по алфавиту списком имен файлов, соответствующих шаблону [...].
Здесь не имеет значения, является ли контекст глобализации частью цикла for
.
Обратите внимание, чтоалфавитныйсортировка по-прежнему подчиняется порядку сопоставления, определенномуLC_COLLATE
переменная:
LC_COLLATE
Эта переменная определяет порядок сортировки, используемый при сортировке результатов расширения имени файла, а также определяет поведение выражений диапазона, классов эквивалентности и последовательностей сортировки в рамках расширения имени файла и сопоставления с образцом (см. Расширение имени файла).