Frage

Ich versuche, ein zu erhalten erwarten Skript zu arbeiten, und wenn ich die -re Flag verwenden (zum regulären Ausdruck Parsing aufrufen), die ‚Timeout‘ Keyword scheint nicht mehr zu arbeiten. Wenn das folgende Skript ausgeführt wird, erhalte ich die Meldung ‚in Schritt 1 timed out‘, dann ‚Schritt 2 beginnen‘ und dann mal, aber nicht gedruckt wird NICHT ‚in Schritt 2 timed out‘ Ich bekomme gerade eine neue Eingabeaufforderung.

Ideen?

#!/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"}
}
War es hilfreich?

Lösung

Figured it out:

expect  {
    timeout { puts "timed out at step 2" ; exit }
    -re "foo " { puts "it said foo at step 2"}
}

Andere Tipps

Ja, die „-re“ Flagge, wie es in Ihrer Frage scheint zu jedem Muster in dem erwarten Befehl gilt. So ist das "timeout" Muster wird "-re timeout", seine Besonderheit zu verlieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top