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