「IFS」変数とは何ですか?

「IFS」変数とは何ですか?

私はこのQ&Aを読んでいます:ファイルの行を繰り返す方法は?

変数とは何ですかIFS? -loopsに関するその用途は何ですかfor

ベストアンサー1

IFSこれはループと直接関係がなく、噴射に関連しています。IFSコマンド出力がループ反復のフラグメントに分割される方法を間接的に決定します。

$foo保護されていない変数置換またはコマンド置換がある場合は、次の$(foo)2つの状況があります。

  • "$foo"置換が二重引用符の間にある場合や変数の代入にある場合など、コンテキストに単一の単語が必要な場合は、置換のx=$foo結果として生成された文字列がそのまま使用されます。
  • コンテキストに複数の単語が必要な場合(ほとんどの場合)、結果文字列に対して2つの追加の拡張が行われます。
    • 文字列はマロ。に表示されるすべての文字は、$IFS単語区切り文字と見なされます。たとえば、IFS=":"; foo="12:34::78"; echo $foo印刷されます(12 34 ​ 78空白の単語があるため、間には2つのスペースがあります)。3478
    • 各単語はグローバルパターンとして扱われ、ファイル名のリストに展開されます。。たとえば、foo="*"; echo $foo現在のディレクトリにあるファイルのリストを印刷します。

他の多くのコンテキストと同様に、forループには単語のリストが必要です。だから

for x in $(foo); do …

これを単語に分割し、$(foo)各単語をグローバルパターンとして扱います。IFSデフォルト値は次のとおりです。スペース、タブ、改行したがって、foo2行を印刷してから、およびを使用してhello worldループhowdy本文を実行します。改行のみを含めるように明示的に変更された場合とループが実行されます。に変更すると、、、(ここで改行文字)および に対してループが実行されます。x=hellox=worldx=howdyIFShello worldhowdyIFSohell​ wrld​␤h​␤wdy

おすすめ記事