いまさら改行コードの違いに悩む
新しいテスト環境に Cygwin を入れる。
テスト用のシェルスクリプトを動かしたらエラー連発。
どうやら改行コードが原因らしい。
`コマンド` でコマンドの実行結果を取り出したとき、改行をうまく捨ててくれないみたい。
Cygwin の中だけで閉じていると、
$ echo foo foo $ echo [`echo foo`] [foo] $ echo foo | hexdump 00000000 66 6f 6f 0a 00000004 $ echo [`echo foo`] | hexdump 00000000 5b 66 6f 6f 5d 0a 00000006
となる。
echo foo で "foo\n" を出力するが、`echo foo` は "foo" のみとなる。
ところが、Windows が絡むと、
$ cmd /C echo foo foo $ echo [`cmd /C echo foo`] ]foo $ cmd /C echo foo | hexdump 00000000 66 6f 6f 0d 0a 00000005 $ echo [`cmd /C echo foo`] | hexdump 00000000 5b 66 6f 6f 0d 5d 0a 00000007
cmd /C echo foo で "foo\r\n" を出力し、`cmd /C echo foo` が "foo\r" となる。
昔の Cygwin だと `cmd /C echo foo` も "foo" のみになったんだけどなぁ。