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"}
}
È stato utile?

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
scroll top