El tiempo de espera no funciona con el indicador '-re' en el script expect
Pregunta
Estoy intentando que un script de expectativa funcione, y cuando uso la marca -re (para invocar el análisis de expresiones regulares), la palabra clave 'timeout' ya no funciona. Cuando se ejecuta la siguiente secuencia de comandos, aparece el mensaje "caducado en el paso 1", luego "inicio del paso 2" y luego se agota pero NO se imprime el "tiempo agotado en el paso 2". / p>
Ideas?
#!/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"}
}
Solución
Figured it out:
expect {
timeout { puts "timed out at step 2" ; exit }
-re "foo " { puts "it said foo at step 2"}
}
Otros consejos
Sí, el " -re " La marca que aparece en su pregunta se aplicará a todos los patrones del comando expect. Así que el " tiempo de espera " el patrón se convierte en " -re timeout " ;, perdiendo su especialidad.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow