Questo articolo spiega le opzioni della riga di comando che possono essere passate a uno script Expect.
Se non ti aspetti un linguaggio di scripting, inizia innanzitutto con il nostro esempio Expect hello world.
1. Esegui lo script Expect dalla riga di comando usando l'opzione -c
Expect ti consente anche di eseguirlo direttamente nella riga di comando usando l'opzione -c come mostrato di seguito.
$ expect -c 'expect "\n" {send "pressed enter\n"} pressed enter $
Una volta eseguito lo script sopra, attende la nuova riga(\n) e premendo il tasto Invio, stampa il messaggio "Invio premuto" ed esce.
2. Esegui lo script Expect in modo interattivo usando l'opzione -i
Lo script Expect può essere eseguito in modo interattivo leggendo i comandi dallo standard input utilizzando l'opzione -i come mostrato di seguito.
$ expect -i arg1 arg2 arg3 expect1.1>set argv arg1 arg2 arg3 expect1.2>
Normalmente, quando esegui il comando Expect sopra senza l'opzione -i, tratterebbe arg1 come nome del file di script, quindi l'opzione -i rende l'elenco degli argomenti ininterrotto.
Questa opzione è utile quando si esegue lo script Expect con il flag -c. Perché per impostazione predefinita Expect viene eseguito in modo interattivo.
3. Stampa messaggi di debug durante l'esecuzione di Expect script
Potresti abilitare la stampa dei messaggi di diagnostica quando esegui il codice con l'opzione -d come mostrato di seguito.
$ 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. Abilita il debugger atteso usando -D
L'opzione -D viene utilizzata per abilitare il debugger e prende solo il valore booleano come argomento. Questo indicherà se il debugger deve essere avviato o semplicemente inizializzarlo e usarlo in un secondo momento.
$ expect -D 1 script
Le opzioni prima della sinistra dell'opzione -D verranno elaborate prima del debugger. Quindi i comandi rimanenti verranno eseguiti dopo aver avviato il debugger.
$ expect -c 'set timeout 10' -D 1 -c 'set a 1' 1: set a 1 dbg1.0>
5. Esegui lo script Expect riga per riga
Normalmente si aspetta legge l'intero script nella memoria prima di eseguirlo. -b l'opzione prevede di leggere lo script una riga alla volta. Questo potrebbe essere utile quando non hai scritto completamente il file in quel momento e ti aspetti che inizi a eseguirlo e quindi evita la scrittura del file temporaneo.
$ expect -b
6. Fai in modo che gli argomenti della riga di comando non vengano interpretati
Puoi fare in modo che l'aspettativa non interpreti gli argomenti della riga di comando usando — flag.
Normalmente leggeresti gli argomenti della riga di comando come mostrato di seguito.
$ cat print_cmdline_args.exp #!/usr/bin/expect puts 'argv0 : [lindex $argv 0]'; puts 'argv1 : [lindex $argv 1]';
Durante l'esecuzione dello script precedente, passa le opzioni della riga di comando, che verranno trattate come un argomento (invece delle opzioni previste) come mostrato di seguito.
$ expect print_cmdline_args.exp -d -c argv0 : -d argv1 : -c