shell コマンドの IFS について

IFSは、シェルにおける環境変数であり、フィールドの区切り文字を指定します。フィールドの区切り文字は、一行のテキストを複数のフィールドに分割する方法を指定するために使用されます。

シェルでは、フィールドの区切り記号は、スペース、タブ、改行です。read などのコマンドでテキストからデータを読み込むとき、シェルはフィールドの区切り記号に基づいてテキストをフィールドに分割し、それぞれの変数に割り当てます。

IFS変数を変更することで、フィールド区切り文字を変更できます。IFSの値は、1文字または複数の文字で、複数の文字はスペースで区切ります。シェルがIFS内の文字のいずれかに遭遇すると、それをフィールド区切り文字として扱います。

以下にIFSの設定のよく使用される例をいくつか記載します。

  1. カンマをフィールド区切り文字として指定する:
IFS=,

そのため、カンマをシェルが検出するとフィールド区切り文字として扱う。

  1. 複数の文字をフィールド区切り文字として指定する:
IFS=":;"

これにより、Shellはフィールドセパレータとしてコロンやセミコロンに遭遇した時点で、それらを認識します。

  1. フィールド区切り文字をデフォルトに戻す:
IFS=$' \t\n'

こうすれば、Shell はデフォルトの区切り文字を使用します。

IF文の値がサブシェルで再定義されていない限り、スクリプト全体で使用できることに注意。

IFS を使用すると、CSV ファイルの解析や空白で区切ったデータの処理など、複数のフィールドを含むテキストの処理を容易に行えます。

bannerAds