改行コードが原因のシェルスクリプトのエラー

ALL
スポンサーリンク

改行コードが原因で、シェルスクリプトの謎なエラーに悩まされました。

Linuxの改行コードは LF ですが、これが Windows と同じ CR+LF になっていると、シェルスクリプトの実行で下記のようなエラーが出ます。

's: オプションが違います -- '
詳しくは `ls --help' を実行して下さい.
: そのようなファイルやディレクトリはありません
: コマンドが見つかりません

Windows上で作成したファイルを、ここ で紹介した WinSCP で Linux へコピーして使用する場合、拡張子無しのファイルは改行コードが CR+LF のままになります。

問題回避の為には、改行コードを Linux の LF にする必要があります。

以下で変換します。

tr -d \\r < 変換前ファイル名 > 変換後ファイル名

これでシェルスクリプトとして実行してもエラーは出なくなります。

参考

改行コードの変換

コメント