Le délai d'attente ne fonctionne pas avec l'indicateur '-re' dans le script d'attente

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

  •  02-07-2019
  •  | 
  •  

Question

J'essaie de faire fonctionner un script attendu et, lorsque j'utilise l'indicateur -re (pour appeler l'analyse syntaxique régulière), le mot clé "timeout" ne semble plus fonctionner. Lorsque le script suivant est exécuté, le message «expiré à l'étape 1», «débutant à l'étape 2», expire, mais n'imprime PAS le «expiré à l'étape 2». Une nouvelle invite s'affiche.

Des idées?

#!/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"}
}
Était-ce utile?

La solution

Figured it out:

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

Autres conseils

Oui, le " -re " L’indicateur tel qu’il apparaît dans votre question s’appliquera à chaque motif de la commande expect. Donc, le " timeout " le motif devient "-re timeout", perd sa particularité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top