Как вернуть порожденный код выхода процесса в Expect script?
Я использую ожидание для запуска тестовых скриптов.
Тесты возвращают успех/неудачу с помощью кода выхода. Но ожидайте возврат эквивалентного кода выхода.
Как заставить ожидание вернуть правильный статус выхода?
Мои тесты - это sql-скрипты, запущенные с psql (командный процессор postgresql).
Поскольку psql не позволяет указывать пароль базы данных в качестве параметра командной строки, ожидайте, что скрипты сделают это.
Итак, моя ожидаемая script выглядит так:
spawn $SPAWN_CMD
expect {
-re "Enter password for new role:" {
send "$PWPROMPT\n"
exp_continue
} -re "Enter it again:" {
send "$PWPROMPT\n"
exp_continue
} -re "Password(.*)" {
send "$PASSWORD\n"
exp_continue
} -re "Password(.*):" {
send "$PASSWORD\n"
exp_continue
} eof
}
Ответы
Ответ 1
Вы уже ждёте eof
в конце вашего цикла, вам просто нужно использовать wait
и catch
результат:
spawn true
expect eof
catch wait result
exit [lindex $result 3]
Выход с 0.
spawn false
expect eof
catch wait result
exit [lindex $result 3]
Выход с 1.