Die allererste Zeile meines expect-Skripts schlägt fehl. Hier sind die gesamten Inhalte meines Skripts und es schlägt fehl:
%Vor%Und es scheitert sofort mit
%Vor%als meine Antwort. Expect ist tatsächlich installiert und befindet sich in / usr / bin / und ich führe dies von root aus. Ich habe auch keine zusätzlichen Leerzeichen oder Zeilen vor dem # -Zeichen. Natürlich gab es ursprünglich mehr zum Skript, aber es versagt, bevor es zu den guten Sachen kommt.
Versuchte es und hier ist das Ergebnis: / usr / bin / expect ^ M: schlechter Dolmetscher
Ist es möglich, dass ein Windows-Zeilenumbruch (das "^ M") darin enthalten ist, der das Skript verwirrt? Sie können versuchen, "od" zu sehen, welche Newline-Zeichen nach dem "expect" und "toromdos" oder einem Editor (z. B. emacs im Hex-Modus) ist, um es zu entfernen. Siehe die man-Seiten für weitere Informationen.
Ihre Zeilenenden sind falsch. Schieben Sie es durch dos2unix
oder tr -d '\r'
.
Ich hatte dieses Problem und fand, dass ich den erwarteten Interpreter nicht installiert hatte! Seltsamerweise, wenn Sie den Befehl in der Shell ausgeführt haben, hat es funktioniert. Durch ein Shell-Skript habe ich den Fehler: / usr / bin / expect: bad Interpreter: Keine solche Datei oder Verzeichnis.
Ich habe es behoben, indem ich einfach den Expect-Interpreter installiert habe. Der Paketname, der gewählt wurde, war: expect libtcl8.6
Einfach ausführen: sudo apt-get install erwartet
Ich weiß es nicht wirklich zu erwarten, um ehrlich zu sein, aber wenn ich das auf meinem System laufe funktioniert es gut. Nichts passiert, aber das ist, was ich erwarten würde. Ich bekomme keine Fehlermeldung. Laut der man-Seite,
%Vor%ist der korrekte Start Ihres Skripts. Erwarten Sie, schlürfen Sie das Skript, das Sie ausführen, als cmdfile.
Die Art und Weise, wie ich das Problem reproduzieren konnte, bestand darin, ein ^ M am Ende der Zeile anstelle einer normalen Zeilenumschaltung zu setzen (sah Bert Fs Antwort und das veranlasste mich, es zu versuchen). Ich bin mir sicher, vim's: set list Befehl zeigt alle ungeraden Zeichen.