以下のような for in ループがあるとします。
for i in /apps/textfiles/*.txt
do
do something
done
50個のファイルがあるとします/アプリ/テキストファイル/
ファイルはどのような順序で選択されますか?
答え1
Bashのファイル名の展開はソートですアルファベット順。
Bash は各単語をスキャンして、文字 '
*
'、'?
'、および '[
' を探します。これらの文字のいずれかが出現すると、その単語はパターンと見なされ、パターンに一致するファイル名のアルファベット順のリストに置き換えられます [...]。
グロブコンテキストがループの一部であっても、ここでは違いはありませんfor
。
ご了承くださいアルファベット順ソートは、LC_COLLATE
変数:
LC_COLLATE
この変数は、ファイル名拡張の結果をソートするときに使用する照合順序を決定し、ファイル名拡張とパターン マッチング内の範囲式、同値クラス、および照合シーケンスの動作を決定します (ファイル名拡張を参照)。