Подтвердить что ты не робот

Как вернуть порожденный код выхода процесса в 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
}
4b9b3361

Ответ 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.