Dieser Artikel erläutert die Befehlszeilenoptionen, die an ein Expect-Skript übergeben werden können.
Wenn Sie noch keine Erfahrung mit der Skriptsprache haben, beginnen Sie zunächst mit unserem Beispiel „Erwarte die Welt“.
1. Führen Sie das Expect-Skript von der Befehlszeile mit der Option -c
ausAußerdem können Sie Expect auch direkt in der Befehlszeile mit der Option -c ausführen, wie unten gezeigt.
$ expect -c 'expect "\n" {send "pressed enter\n"} pressed enter $
Sobald Sie das obige Skript ausgeführt haben, wartet es auf den Zeilenumbruch (\n) und beim Drücken der Eingabetaste wird die Meldung „Pressed Enter“ ausgegeben und beendet.
2. Erwarte das Skript interaktiv mit der Option -i
Das Expect-Skript kann interaktiv ausgeführt werden, indem Befehle aus der Standardeingabe mit der Option -i gelesen werden, wie unten gezeigt.
$ expect -i arg1 arg2 arg3 expect1.1>set argv arg1 arg2 arg3 expect1.2>
Wenn Sie den obigen Expect-Befehl normalerweise ohne die Option -i ausführen, würde er arg1 als Skriptdateinamen behandeln, sodass die Option -i die Argumentliste als ununterbrochen macht.
Diese Option ist nützlich, wenn Sie das Expect-Skript mit dem Flag -c ausführen. Weil erwartet standardmäßig interaktiv ausgeführt wird.
3. Gibt während der Ausführung des Expect-Skripts Debug-Meldungen aus
Sie können das Drucken der Diagnosemeldungen aktivieren, wenn Sie den Code wie unten gezeigt mit der Option -d ausführen.
$ cat sample.exp # !/usr/bin/expect -f expect "\n"; send "pressed enter"; $ expect -d sample.exp expect version 5.43.0 argv[0] = expect argv[1] = -d argv[2] = sample.exp set argc 0 set argv0 "sample.exp" set argv "" executing commands from command file sample.exp expect: does "" (spawn_id exp0) match glob pattern "\n"? no expect: does "\n" (spawn_id exp0) match glob pattern "\n"? yes expect: set expect_out(0,string) "\n" expect: set expect_out(spawn_id) "exp0" expect: set expect_out(buffer) "\n" send: sending "pressed enter" to { exp0 pressed enter}
4. Aktivieren Sie den Expect-Debugger mit -D
Die Option -D wird verwendet, um den Debugger zu aktivieren, und nimmt nur den booleschen Wert als Argument. Dies zeigt an, ob der Debugger gestartet oder nur initialisiert und zu einem späteren Zeitpunkt verwendet werden muss.
$ expect -D 1 script
Die Optionen links von der Option -D werden vor dem Debugger verarbeitet. Dann werden die restlichen Befehle nach dem Start des Debuggers ausgeführt.
$ expect -c 'set timeout 10' -D 1 -c 'set a 1' 1: set a 1 dbg1.0>
5. Erwarte Skript Zeile für Zeile ausführen
Normalerweise liest Expect das gesamte Skript in den Speicher, bevor es ausgeführt wird. Die Option -b lässt erwarten, dass das Skript Zeile für Zeile gelesen wird. Dies könnte nützlich sein, wenn Sie die Datei zu diesem Zeitpunkt noch nicht vollständig geschrieben haben und erwarten, dass sie ausgeführt wird, und somit das Schreiben einer temporären Datei vermieden wird.
$ expect -b
6. Machen Sie Befehlszeilenargumente so, dass sie nicht interpretiert werden
Sie können den Expect dazu bringen, die Befehlszeilenargumente nicht zu interpretieren, indem Sie — flag verwenden.
Normalerweise würden Sie die Kommandozeilenargumente wie unten gezeigt lesen.
$ cat print_cmdline_args.exp #!/usr/bin/expect puts 'argv0 : [lindex $argv 0]'; puts 'argv1 : [lindex $argv 1]';
Übergeben Sie beim Ausführen des obigen Skripts die Befehlszeilenoptionen, die wie unten gezeigt wie ein Argument behandelt werden (anstelle von Erwartungsoptionen).
$ expect print_cmdline_args.exp -d -c argv0 : -d argv1 : -c