Le délai d'attente ne fonctionne pas avec l'indicateur '-re' dans le script d'attente
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"}
}
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