2016-09-12 1 views
0

Я хочу реализовать обработку ошибок для сценария ожидания. Моя основная проблема заключается в том, что команды ожидания ждут и не прерываются, если они не совпадают. Я понял, как реагировать на таймаут.ожидать сценария глобального журнала ошибок

expect { 
    timeout exit 
    "Name." 
} 

Мне нужно указать действие для тайм-аутов для каждой команды ожидания. Есть ли способ определить глобальное поведение для каждой команды ожидания?

Я хотел бы войти принимаемую мощность и предыдущую команду отправить

ответ

1

Вы можете использовать expect_after или expect_before:

expect_after [expect_args]

работает идентично expect_before за исключением того, что если узоры от бота ч ожидаем и expect_after может соответствовать, ожидается модель используется.

expect_before [expect_args]

принимает те же аргументы, что и ожидать, однако он возвращает немедленно. Паттерн-действие пары из последних expect_before с одинаковым идентификатором нереста неявно добавляются к любым следующим ожидать команд. Если шаблон соответствует, он обрабатывается так, как если бы он был указан в команде , ожидая команду, а связанный с ней корпус выполняется в контексте команды , ожидающей. Если шаблоны от обоих expect_before и ожидать может соответствовать, используется шаблон expect_before.
... ...

Ниже приведен простой пример:

[STEP 101] $ cat foo.exp 
spawn bash --noprofile --norc 
expect_after timeout { 
    incr n_timeout 
    send "echo 'timeout #$n_timeout'\r" 
} 

set timeout 2 
set n_timeout 0 
expect { 
    foo {} 
} 
expect { 
    bar {} 
} 

send "exit\r" 
expect eof 
[STEP 102] $ expect foo.exp 
spawn bash --noprofile --norc 
bash-4.3$ echo 'timeout #1' 
timeout #1 
bash-4.3$ echo 'timeout #2' 
timeout #2 
bash-4.3$ exit 
exit 
[STEP 103] $ 

 Смежные вопросы

  • Нет связанных вопросов^_^