つれズレ日記

Web&Androidのひよっこエンジニア♀のひとりごと。おいしいものとカメラと邦画とスポーツ観戦が大好き。

【bash】文字列を任意の文字で分割する(≒split)

IFSはLinuxで区切り文字を表す環境変数
デフォルトは \t\n(スペース・タブ・改行)

IFSの設定を一時的に書き換えることで上記以外の任意の文字で分割したり、逆にスペースやタブ、改行で分割させないことが可能になる。

文字列分割された結果は、$1,$2,$3…に自動的に代入される。

IFS=" "
TEXT="1 2,3 4"
set -- $TEXT
echo $1
echo $2

上記の実行結果は
1
2,3
となる。

IFS="/."
TEXT="1/2.3 4"
set -- $TEXT
echo $1
echo $2
echo $3

とすれば、
1
2
3 4
となる。

処理終了後、IFSの値をデフォルトに戻す宣言を忘れないこと!
後続処理がうまくいかなくなってハマるよ!(ハマったw)

デフォルトに戻す
IFS=$' \t\n'