^Mのせいでシェルスクリプトが動かない!

Linuxの話。
Windowsで作成したシェルスクリプトLinuxで実行した。

問題ないと思っていたのだけど、

#!/bin/sh^Mが見つからないとエラーが出る。

^Mってなんだ!?

心当たりはあったのだけど、調べてみると、
やはり^Mは改行コードみたい。

Windowsの改行コードはCRLFなのに対して、Linuxの改行コードはLFなので、
CRの部分がこうなっちゃってるみたい。

これじゃ動かないので、viエディタで置換することにしたのだけど・・・・。
viエディタを開いても、^Mなんて出てこない。

:%s/^M//
<<|

で置換しようとしたけども、該当する文字列は存在しないと。

どうやら、<span style="color: #ff0000">viを開く時に-bオプションをつければよい</span>らしい。
-bオプションを付けた後、上記の置換操作を行うことで解決できた。