Tuesday, January 09, 2007

改行コードが Unix 風でないとシェルスクリプトが動かない件について

Unix の改行コードは LF(\n)、Dos/Windows の改行コードは CRLF(\r\n) になるのが普通だが、改行コードが LF でないと Unix のシェルスクリプトがうまく動かない場合がある。改行コードが CRLF だと vi で開いたときに行末に ^M という文字が出ることが多いが、そうならずにきれいに表示される vi もあるので、そのために原因が分かりにくいときがあるので要注意。

今日はそれではまってしまった。シマリンによると Perl スクリプトでも改行コードが原因でうまくいかないことが多いらしい。

同じことは、文字コードの食い違いでも発生する場合がある。慎重を期すなら、スクリプト実行前にシェルの環境変数を設定するなどして文字コードをスクリプトで使っている文字コードにあわせるべきだろう。

No comments: