bashのIFSに改行のみを設定するには
bashのIFSに改行のみを設定するのにはまった。
¥’¥n’
これに気がつくまで時間がかかった
$'string' の形式を持つ単語は特殊な扱いを受けます。 この単語は string に展開され、 それから ANSI C 標準で仕様が決められている、 バックスラッシュでエスケープされている文字に置き換えられます。 バックスラッシュエスケープシーケンスは、 (もし存在すれば) 以下のようにデコードされます:
\n
改行文字
$ echo "foo bar buzz" >> a $ echo "foo bar buzz" >> a $ echo "foo bar buzz" >> a $ cat a foo bar buzz foo bar buzz foo bar buzz $ (IFS=$'\n';for i in `cat a`;do echo ${i}bbb; done) foo bar buzzbbb foo bar buzzbbb foo bar buzzbbb $ for i in `cat a`;do echo ${i}bbb; done foobbb barbbb buzzbbb foobbb barbbb buzzbbb foobbb barbbb buzzbbb
ちなみにデフォルトである 改行タブ空白を設定するときには
IFS="$'\n'$'\t' "