Я использую, ожидают для выполнения сценариев тестирования. Тесты возвращают успех/отказ через код выхода. Но ожидайте возврат эквивалентный код выхода. Как сделать, ожидают возврат надлежащий статус выхода?
Мои тесты являются sql скриптами, запущенными с psql (postgresql командный процессор). Так как psql не позволяет указывать пароль базы данных как параметр командной строки, ожидать, что сценарии делают это.
Так, мой ожидать сценарий похож:
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
}
Вы уже ожидаете 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.