Warum schlägt mein Expect-Skript in Zeile 1 fehl?

7

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.

    
Dennis Day 22.12.2010, 02:33
quelle

4 Antworten

12
  

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.

    
Bert F 22.12.2010, 02:55
quelle
7

Ihre Zeilenenden sind falsch. Schieben Sie es durch dos2unix oder tr -d '\r' .

    
Ignacio Vazquez-Abrams 22.12.2010 02:35
quelle
3

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

    
G_Style 18.11.2016 21:48
quelle
1

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.

    
Glenn McAllister 22.12.2010 03:00
quelle

Tags und Links