Ожидается ли глобальный обработчик тайм-аута? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть ожидаемый скрипт, который выглядит примерно так:

set timeout 15
spawn someprocess
expect "a line"
expect "another line"
expect "some other line"

По сути, он ожидает появления этих строк. Действия не предпринимаются.

Я не хочу писать следующее для каждой строки, которую я ищу:

expect {
    "a line" {}
    timeout { exit 1 }
}

Я хочу, чтобы expect возвращал ненулевой код состояния (т. Е. В $?), если он истекает в любой момент. Как мне это сделать?

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете установить строку expect_before, которая будет работать "параллельно" с любыми последующими ожидаемыми командами для проверки на время ожидания. Просто добавьте после вашей spawn команды

expect_before timeout { exit 1 }

Если вы хотите выполнить ошибку при выходе из порожденного процесса, вы можете объединить их следующим образом:

expect_before {
    timeout { exit 1 }
    eof { exit 1 }
}
...