Korn シェル (POSIX シェル) におけるフィールドの分割

コマンド置換の実行後、Korn シェルは IFS (内部フィールド・セパレーター) 変数に指定されたフィールド区切り文字がないか、置換結果をスキャンします。 この文字が検出された場所で、シェルは置換を別個の引数に分割します。

シェルは明示的なヌル引数 ("" または '') は残し、暗黙的なヌル引数 (値のないパラメーターの結果として生じたもの) を除去します。
  • IFS の値がスペース、タブ、または改行文字のいずれかである場合や、設定されていない場合は、スペース、タブ、または改行文字のシーケンスは、入力の先頭または末尾にあるものは無視され、入力内にあるものはフィールドを区切ります。 例えば、以下の入力は schooldays という 2 つのフィールドという結果になります。
    <newline><space><tab>school<tab><tab>days<space>
  • それ以外で、IFS の値がヌルでない場合は、以下の規則がシーケンスに適用されます。 IFS ホワイト・スペース は、IFS の値の中にあるホワイト・スペース文字の任意のシーケンス (ゼロまたはそれ以上のインスタンス) を意味するのに使用されます (例えば、IFS に space/comma/tab が含まれている場合は、スペースとタブ文字の任意のシーケンスは IFS ホワイト・スペースであると見なされます)。
    1. IFS ホワイト・スペースは、入力の先頭と末尾では無視されます。
    2. IFS ホワイト・スペースではない IFS 文字が入力に現れると、そのたびにそれが隣接する IFS ホワイト・スペースと共に、フィールドを区切ります。
    3. 長さがゼロ以外の IFS ホワイト・スペースがフィールドを区切ります。