Il timeout non funziona con il flag '-re' nello script prevede
Domanda
Sto cercando di far funzionare uno script prevede e quando uso il flag -re (per invocare l'analisi delle espressioni regolari), la parola chiave "timeout" sembra non funzionare più. Quando viene eseguito il seguente script, viene visualizzato il messaggio "timeout al passaggio 1", quindi "avvio passaggio 2" e quindi scade ma NON stampa il "timeout al passaggio 2" Viene visualizzato un nuovo prompt.
idee?
#!/usr/bin/expect --
spawn $env(SHELL)
match_max 100000
set timeout 2
send "echo This will print timed out\r"
expect {
timeout { puts "timed out at step 1" }
"foo " { puts "it said foo at step 1"}
}
puts "Starting test two\r"
send "echo This will not print timed out\r"
expect -re {
timeout { puts "timed out at step 2" ; exit }
"foo " { puts "it said foo at step 2"}
}
Soluzione
Figured it out:
expect {
timeout { puts "timed out at step 2" ; exit }
-re "foo " { puts "it said foo at step 2"}
}
Altri suggerimenti
Sì, il " -re " flag come appare nella tua domanda si applicherà a ogni modello nel comando di attesa. Quindi il "timeout" il pattern diventa " -re timeout " perdendo la sua particolarità.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow