Windowsで作成したシェルスクリプトで実行すると、「command not found」エラー
シェルスクリプトを実行すると「$’\r’: command not found」のエラー
シェルスクリプトを作るときはAtom等のエディタで作ってSCPでアップしていました。macOSからWindowsに変更しても同じような感覚で作成すると「$’\r’: command not found」エラーになりました
$ sh test.sh test.sh: line 2: $'\r': command not found
これは、改行コードがWindowsの改行コードになっていることが原因です。前はmacOSだったので改行コードがUnixの改行コードになっていたので意識しなくてもよかったのですが、WindowsだとWindowsの改行コードになります
ファイルの改行コードを確認
Windowsで改行コードを作成すると行末に「^M$」となりWindowsでの改行コードになります。UTF8だと改行コードは「$」となります
# 改行コードがWindowsのファイル $ cat -e test.sh #!/bin/bash^M$ ^M$ echo "test"^M$ # 改行コードをUTF8のファイル $ cat -e test_utf8.sh #!/bin/bash$ $ echo "ls -lh"$
改行コードをUnix形式に変換する
改行コードが原因なのでテキスエディタで改行コードをWindowsからUTF8に変換して再アップロードすればOKですが、Linux側で改行コードをsedコマンドで変換しても大丈夫です
$ sed "s/^M//g" <変換前のファイル> > <変換後のファイル>
ディスカッション
コメント一覧
まだ、コメントがありません