Tento článek vysvětluje možnosti příkazového řádku, které lze předat očekávanému skriptu.
Pokud jste novým očekáváním skriptovacího jazyka, začněte nejprve naším příkladem očekávejte ahoj světe.
1. Spusťte očekávaný skript z příkazového řádku pomocí volby -c
expect také umožňuje spouštět jej přímo v příkazovém řádku pomocí volby -c, jak je ukázáno níže.
$ expect -c 'expect "\n" {send "pressed enter\n"} pressed enter $
Jakmile výše uvedený skript spustíte, počká na nový řádek (\n) a po stisknutí klávesy enter vytiskne zprávu „stisknuto enter“ a ukončí se.
2. Interaktivně spusťte skript očekávání pomocí volby -i
Skript Expect se může spouštět interaktivně čtením příkazů ze standardního vstupu pomocí volby -i, jak je uvedeno níže.
$ expect -i arg1 arg2 arg3 expect1.1>set argv arg1 arg2 arg3 expect1.2>
Normálně, když spustíte výše uvedený příkaz expect bez volby -i, bude arg1 považovat za název souboru skriptu, takže volba -i způsobí, že seznam argumentů bude nepřerušený.
Tato volba je užitečná, když spouštíte očekávaný skript s parametrem -c. Protože ve výchozím nastavení očekávejte, že se spustí interaktivně.
3. Tisk ladicích zpráv při provádění očekávaného skriptu
Můžete povolit tisk diagnostických zpráv, když spustíte kód s volbou -d, jak je uvedeno níže.
$ 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. Povolte očekávaný ladicí program pomocí -D
Volba -D se používá k povolení ladicího programu a jako argument bere pouze booleovskou hodnotu. To bude indikovat, zda je třeba spustit ladicí program, nebo jej pouze inicializovat a použít později.
$ expect -D 1 script
Volby před levou stranou volby -D budou zpracovány před debuggerem. Poté budou zbývající příkazy provedeny po spuštění ladicího programu.
$ expect -c 'set timeout 10' -D 1 -c 'set a 1' 1: set a 1 dbg1.0>
5. Spustit očekávaný skript řádek po řádku
Normálně očekávejte načtení celého skriptu do paměti před jeho provedením. Volba -b znamená, že se očekává, že bude skript číst jeden řádek po druhém. To by mohlo být užitečné, když jste do té doby nezapsali celý soubor a očekáváte, že se spustí, a tím se vyhnete zápisu dočasného souboru.
$ expect -b
6. Vytvořte argumenty příkazového řádku, které nebudou interpretovány
Pomocí parametru — flag můžete očekávat, že nebude interpretovat argumenty příkazového řádku.
Normálně byste si přečetli argumenty příkazového řádku, jak je uvedeno níže.
$ cat print_cmdline_args.exp #!/usr/bin/expect puts 'argv0 : [lindex $argv 0]'; puts 'argv1 : [lindex $argv 1]';
Při provádění výše uvedeného skriptu předejte možnosti příkazového řádku, se kterými bude zacházeno jako s argumentem (místo očekávaných možností), jak je uvedeno níže.
$ expect print_cmdline_args.exp -d -c argv0 : -d argv1 : -c