シェルスクリプトにおいて、要素の区切りは「空白文字」に設定することが一般的です。ただし現実問題として「空白文字」が要素のひとつとして扱わねばならない場合があり、その際には「空白文字」以外をデリミタとして設定する必要があります。
while
とともに利用することが多い、標準入力を変数に代入するread
コマンドもまたデフォルトでは「空白文字」を区切り文字としています。これを「空白文字」以外にする場合はIFS
を利用します。
たとえば次の例は区切り文字を@
にしています。
echo "perl@python@php" | while IFS=@ read x y z; do
echo "x => $x"
echo "y => $y"
echo "z => $z"
done;
# x => perl
# y => python
# z => php