Тайм-аут не работает с флагом '-re' в ожидаемом скрипте - PullRequest
0 голосов
/ 26 сентября 2008

Я пытаюсь заставить ожидаемый сценарий работать, и когда я использую флаг -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"}
}

Ответы [ 2 ]

2 голосов
/ 13 октября 2008

Да, флаг "-re", как он появляется в вашем вопросе, будет применяться ко всем шаблонам в команде ожидаемых Таким образом, шаблон «timeout» становится «-re timeout», теряя свою особенность.

2 голосов
/ 26 сентября 2008
Figured it out:

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