我使用expect来运行测试脚本。 测试通过退出代码返回成功/失败。但期望返回等效的退出代码。 如何让期望返回正确的退出状态?
我的测试是使用 psql (postgresql命令处理器)运行的sql脚本。 由于psql不允许将数据库密码指定为命令行参数,因此 expect scripts 可以执行此操作。
所以,我的期望脚本看起来像:
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
}
答案 0 :(得分:28)
您已经在循环结束时等待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退出。