nanoを使用して保存するとシェルスクリプトは機能しますが、Notepad ++を使用して保存すると機能しません。

nanoを使用して保存するとシェルスクリプトは機能しますが、Notepad ++を使用して保存すると機能しません。

Notepad ++のbashスクリプトをSSH内のNanoエディタの新しいファイルにコピーして保存します。うまくいきます。 (sh ./install).

ただし、ファイル(まったく同じ内容)を保存すると、私のWebサーバーにアップロードし、同じコンピュータからWgetを使用してダウンロードします。構文エラーが発生します。エンコーディングを確認してみると同じようです。それ以来、私は問題が解決することを確認するためにいくつかの文字エンコーディングで遊んでいます。 wgetを使用してファイルをダウンロードした後、ファイルを実行可能にしました!

ファイルが正常に実行され、nanoを使用してコピーして貼り付けてもエラーは発生しません。これは何か知っていますか?

ベストアンサー1

私は問題が行末に関連していると確信しています。おそらくどこかで*nixではなくマシンを使用しているでしょう。さらに、アップロードされたテキストファイルにWindowsスタイルの行末を追加するという問題(Linuxで実行)が発生し、同様の内容を見ることapacheができます。

テストするには、ダウンロードしたファイルをインポートしてに渡しますod。ファイルが長い場合は、最初の数行だけインポートしてください。

head script.sh | od -c

出力を見て、次のようなものがあることを確認してください。

f   o   o  \r  \n

これはキャリッジリターンで、Windows行では* nixとは異なります\r。これが実際に問題であることが判明したら、キャリッジリターンを削除してファイルを修正できます。\r\n\n

sed -i 's/\r//g' script.sh

おすすめ記事