Unter Windows bearbeitetes Shell-Skript zeigt unerwartete Fehlermeldung an

Unter Windows bearbeitetes Shell-Skript zeigt unerwartete Fehlermeldung an

Ich habe Probleme, ein Skript auszuführen, um per SSH auf einen Remote-Server zuzugreifen. Wenn ich einfach per SSH von der Befehlszeile aus auf den Server zugreife, habe ich keine Probleme, aber wenn ich ein Skript ausführe, um dies zu tun, erhalte ich die Fehlermeldung „Name oder Dienst nicht bekannt“. Ich habe die IP-Adresse und den Hostnamen zu /etc/hosts hinzugefügt, aber das hat nicht geholfen.

Mein Skript ist einfach:

 #!/bin/bash 
ssh username@hostname

Mache ich etwas falsch? Natürlich brauche ich dafür nicht nur ein Skript, aber ich werde Befehle hinzufügen, die ausgeführt werden, sobald ich das zum Laufen gebracht habe.

Antwort1

Das Problem mit dem Skript besteht darin, dass es beim Kopieren einer Datei aus einem anderen System wie Windows eine neue Zeile \nund einen Wagenrücklauf hinzufügt \r\n. Weitere Informationen zu Zeilenvorschüben finden Sie unterNeue ZeileEintrag bei Wikipedia.

Um das Problem zu demonstrieren, habe ich ein kurzes Fragment hochgeladenHierDarin wird erklärt, wie das Problem gelöst werden kann.

Kurz gesagt: Verwenden Sietrum diese seltsamen Zeilenenden zu entfernen

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

Führen Sie das Skript dann erneut aus.

Oder wie artm vorgeschlagen hat.

Verwenden Sie im vimEditor

:set ff=unix

(ffKurzform fürDatei Format) und speichern Sie die Datei im Format shift+zz.

verwandte Informationen