In welcher Reihenfolge ruft eine Bash-FOR-IN-Schleife Dateien in einem Ordner ab?

In welcher Reihenfolge ruft eine Bash-FOR-IN-Schleife Dateien in einem Ordner ab?

Angenommen, ich habe die folgende for-in-Schleife:

for i in /apps/textfiles/*.txt
do
do something
done

Nehmen wir nun an, ich habe 50 Dateien darin/apps/textdateien/

In welcher Reihenfolge werden die Dateien ausgewählt?

Antwort1

Dateinamenerweiterung in Bash ist Sortierungalphabetisch.

Aus dem Bash-Handbuch:

Bash durchsucht jedes Wort nach den Zeichen ' *', ' ?' und ' ['. Wenn eines dieser Zeichen vorkommt, wird das Wort als Muster betrachtet und durch eine alphabetisch sortierte Liste von Dateinamen ersetzt, die dem Muster entsprechen [...].

Es macht hier keinen Unterschied, dass Ihr Globbing-Kontext Teil der forSchleife ist.

Beachten Sie, dassalphabetischDie Sortierung folgt weiterhin der Sortierreihenfolge, die durch dieLC_COLLATEVariable:

LC_COLLATE

Diese Variable bestimmt die Sortierreihenfolge, die beim Sortieren der Ergebnisse der Dateinamenerweiterung verwendet wird, und bestimmt das Verhalten von Bereichsausdrücken, Äquivalenzklassen und Sortiersequenzen innerhalb der Dateinamenerweiterung und des Mustervergleichs (siehe Dateinamenerweiterung).

verwandte Informationen