El tiempo de espera no funciona con el indicador '-re' en el script expect

StackOverflow https://stackoverflow.com/questions/136554

  •  02-07-2019
  •  | 
  •  

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"}
}
¿Fue útil?

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