我使用Expect运行测试脚本。通过退出代码测试返回成功/失败。但期望返回等效的退出代码。如何使期望返回正确的退出状态?
我的测试是使用 psql (postgresql命令处理器)运行的sql脚本。由于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结果即可:
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.退出。