Ожидайте очистки буфера - PullRequest
1 голос
/ 14 марта 2012

Я пишу сценарий tcl / wait для проверки строкового вывода события и, если он найден, что-то делает. Ниже приведен код, который у меня есть,

proc cli_detect_event {cmd value} {
    cli_send "$cmd"

    expect -timeout 3 $value {
    } timeout fail
} 

Поэтому, когда я отправляю $ cmd, я получаю событие, которое должно соответствовать значению $. Я хотел знать, есть ли способ предотвратить выброс того, что находится в ожидаемом (буфере) при повторном использовании ожидаемого после этого процесса, чтобы я мог ожидать совпадения на тех же выходных данных от отправленной команды?

Ответы [ 2 ]

0 голосов
/ 19 февраля 2013

AFAIK №.

Если истекло время ожидания, то буфер может быть найден с помощью следующего предложения ожидаемого.Но если значение $ соответствует, то все до этой точки, включая само значение $, выбрасывается из буфера (и печатается для пользователя).

0 голосов
/ 15 июня 2012

Переменная ожидаемого буфера связана с ее переменной spawn_id, поэтому, чтобы убедиться, что ваш wait_out (буфер) используется, вы можете просто передать идентификатор spawn

proc cli_detect_event {cmd value spawnId } {
    cli_send "$cmd"

    expect -i $spawnId -timeout 3 $value {
    } timeout fail
} 

Это должно исправить вашу проблему.Единственное, что вам нужно, это сохранить spawn_id при запуске процесса

...