クローゼの色々備忘録

仕事や私生活で学んだこと、ゲームの感想などを記録。お役に立てれば幸いです。

シェルスクリプト なぜかうまく実行できない!? 改行コードにご注意

シェルスクリプトが実行できない

 自分の端末にある、Atomというエディタでスクリプトを書き、

WinSCPを使ってサーバ(Cent OS6.5)にアップロードし、

root ユーザで下記のように実行権限を与えた。

 

# chmod 755 /var/script/test.sh

 

よし、実行だ!・・・ん(・ω・)?

「そんなファイルは存在しません」って怒られた。

 

うーん、権限も付与されてるし、ファイルのコマンドにも間違いはなさそう。 

一体なにが原因なのか分からず、お隣の先輩に見てもらった。

 

 

 原因

先輩:「これ、改行コードが入ってるよ。これ消したらいけるよ。」

クローゼ:「え?そうなんです?どこに入ってるんです?」

 

先輩:「ファイルを開くときに "-b" オプションをつけると見えるよ。」

※"-b"は、ファイルをバイナリモードで開くこと 

 

# vi /var/script/test.sh -b

 

なんと、一行ごとに『^M』が入ってる!!!

なんじゃこれー

 

対処

とにかく、『^M』を消さないと。

けど毎行入ってるので、一つずつ消すのは辛い。

 

そうか、置換すればいいのか!

 

# vi /var/script/test.sh -b

で、ファイルを開いた後に、viのコマンドモードで、

 

:%s/^M//g

 

と入力して [Enter] を押せば、一括で置換してくれました!

 

『^M』の入力方法に注意

これ、文字列じゃないんです。クローゼは間違たwww

コマンドモードで、次のように入力します。

  1. 『Ctrl+V』を押す
  2. 『Ctrl+M』を押す

 

スクリプトは無事に実行されました。

 

 

以上、本日の学びでした。