Timeout funktioniert nicht mit ‚-re‘ Flagge in erwarten Skript
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"}
}
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