如何在 Expect 脚本中返回生成的进程退出代码?

发布于 2024-09-10 15:16:49 字数 665 浏览 6 评论 0原文

我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野の 2024-09-17 15:16:49

您已经在循环结束时等待 eof,您只需使用 waitcatch 结果:

spawn true
expect eof
catch wait result
exit [lindex $result 3]

以 0 退出 。

spawn false
expect eof
catch wait result
exit [lindex $result 3]

退出 1

You're already waiting for the eof at the end of your loop, you just need to use wait and catch the result:

spawn true
expect eof
catch wait result
exit [lindex $result 3]

Exits with 0.

spawn false
expect eof
catch wait result
exit [lindex $result 3]

Exits with 1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文