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