如何在 Expect 脚本中返回生成的进程退出代码?
我使用 Expect 来运行测试脚本。 测试通过退出代码返回成功/失败。但期望返回等效的退出代码。 如何使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
}
I use expect for running test scripts.
Tests return success/failure through exit code. But expect return equivalent exit code.
How to make expect return proper exit status?
My tests are sql scripts run with psql (postgresql command processor).
Since psql doesn't allow to specify database password as a command line parameter, expect scripts do that.
So, my expect script looks like:
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
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您已经在循环结束时等待
eof
,您只需使用wait
并catch
结果:以 0 退出 。
退出 1
You're already waiting for the
eof
at the end of your loop, you just need to usewait
andcatch
the result:Exits with 0.
Exits with 1.