私たちは Windows マシンで作業しており、コードは Linux にデプロイされています。
いくつかの Linux スクリプトを開発しているときに、いくつかの ctrl-m 文字があります。リリースは顧客に提供されます。
シェル スクリプトの ctrl-m 文字への影響は何ですか。
ヌス
私たちは Windows マシンで作業しており、コードは Linux にデプロイされています。
いくつかの Linux スクリプトを開発しているときに、いくつかの ctrl-m 文字があります。リリースは顧客に提供されます。
シェル スクリプトの ctrl-m 文字への影響は何ですか。
ヌス
viエディタでファイルを開く
エスケープを押して、ファイルのコマンドラインに以下を入力します。
:%s/^M//g
Cntrl キー + V + M を押して ^M が追加されていることを確認してから、Enter キーを押します。
文字が削除され、ファイルを保存できます。
インタープリターが見つからないように、シバン行を変更します。
$ ./t.sh
bash: ./t.sh: /bin/bash^M: bad interpreter: No such file or directory
文字は^M
改行です。Windows と DOS では、CR
( ^M
、または ASCII コード 13) の後にLF
( ^J
、または改行、ASCII コード 10) が続くテキスト行が終了します。Linux は単にLF
を使用するため、キャリッジ リターンはテキストの一部として表示され、そのように解釈されます。つまり、スクリプトが壊れます。
ほとんどの Linux ディストリビューションには、 dos2unixというユーティリティがプリインストールされています。これを使用して、行末文字を DOS スタイルから Linux スタイルに変換できます。
一部のエディターは自動的に変換を行います。他のものには、使用するモードを指定できるオプションがあります。
You can use the below syntax too. Since in windows, this Control+v+m will not work , you can use \r instead.
Open the file in binary mode to view the Control-M characters using vim editor with -b option and use the below command to replace the Control-M characters
%s@\r@@g