for inループに次のものがあるとしましょう。
for i in /apps/textfiles/*.txt
do
do something
done
それでは、50個のファイルがあるとしましょう。/アプリケーション/テキストファイル/
ファイルはどの順序で選択されますか?
答え1
Bashのファイル名拡張子はソートされます。アルファベット順。
Bashは各単語から「
*
」、「?
」、「[
」の文字を検索します。これらの文字のいずれかが発生すると、その単語はパターンとして扱われ、[...]パターンと一致するファイル名のアルファベット順のリストに置き換えられます。
ワイルドカードコンテキストがループの一部であることには違いはありませんfor
。
気づくアルファベット順に並べ替えはまだ次のようですLC_COLLATE
変える:
LC_COLLATE
この変数は、ファイル名拡張の結果をソートするときに使用される照合順序を決定し、ファイル名拡張とパターンマッチングの範囲式、等価クラス、およびソート順序の動作を決定します(ファイル名拡張を参照)。