Тайм-аут не работает с флагом '-re' в ожидаемом скрипте
Вопрос
Я пытаюсь заставить работать сценарий ожидания, и когда я использую флаг -re (для вызова синтаксического анализа регулярных выражений), ключевое слово 'timeout', похоже, больше не работает.Когда запускается следующий скрипт, я получаю сообщение "время ожидания истекло на шаге 1", затем "запуск шага 2", а затем истекает время ожидания, но не печатается "время ожидания истекло на шаге 2", я просто получаю новое приглашение.
Идеи?
#!/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"}
}
Решение
Figured it out:
expect {
timeout { puts "timed out at step 2" ; exit }
-re "foo " { puts "it said foo at step 2"}
}
Другие советы
Да, флаг "-re", как он указан в вашем вопросе, будет применяться к каждому шаблону в команде expect.Таким образом, шаблон "тайм-аут" становится "-re timeout", теряя свою особенность.
Не связан с StackOverflow