Windowsで編集されたシェルスクリプトに予期しないエラーメッセージが表示される

Windowsで編集されたシェルスクリプトに予期しないエラーメッセージが表示される

リモートサーバーにSSHで接続するスクリプトを実行するには、いくつかの問題があります。コマンドラインからサーバーにSSHで接続しても問題はありませんが、これを行うためにスクリプトを実行すると、「不明な名前またはサービス」というエラーが発生します。 IPアドレスとホスト名を/ etc / hostsに追加しましたが、役に立ちません。

私のスクリプトは簡単です。

 #!/bin/bash 
ssh username@hostname

私は何が間違っていましたか?明らかに、このために特別なスクリプトを書く必要はありませんが、タスクを開始したら実行するコマンドを追加します。

答え1

このスクリプトの問題は、Windowsなどの他のシステムからファイルをコピーするときに改行と\nキャリッジリターンが追加されることです\r\n。改行の詳細については、次を参照してください。新しいチームWikipedia アイテムです。

問題を示すために短いスニペットをアップロードしました。ここ問題を解決する方法を説明します。

一言で言えば:ティー奇妙な行末を削除してください。

tr -d \\r <yourscript>newscript && mv newscript yourscript

その後、スクリプトを再実行します。

またはartmの提案に従ってください。

エディターにいる間、vim以下を使用します。

:set ff=unix

FFは略語ですファイル形式)ファイルを保存しますshift+zz

関連情報