1

Предположим, у меня есть следующие файлы в папке

1.txt
2.txt
a.txt
b.txt
c.txt

Если я сопоставлю эти файлы глобусом для их обработки, например,

for f in *;do echo $f;done

тогда Bash сопоставит их - в соответствии с man-страницей - в алфавитном порядке.

Однако существует ли стандарт POSIX, определяющий порядок сопоставления глобусов? Таким образом, я мог бы положиться на определенный порядок сопоставления в любой оболочке, если он соответствует POSIX.

1 ответ1

1

Да, заказ требуется POSIX. Из спецификации POSIX:

Если шаблон соответствует каким-либо существующим именам файлов или путям, шаблон должен быть заменен этими именами файлов и путями, отсортированными в соответствии с последовательностью сортировки, действующей в текущей локали. [Акцент добавлен]

Чтобы быть уверенным в последовательных результатах, нужно указать локаль. Для программирования настройка LC_COLLATE=C является распространенным выбором.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .