当前位置: 首页 > 面试题库 >

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

张伯寅
2023-03-14
问题内容

我使用Expect运行测试脚本。通过退出代码测试返回成功/失败。但期望返回等效的退出代码。如何使期望返回正确的退出状态?

我的测试是使用 psqlpostgresql命令处理器)运行的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在循环结束时等待了,您只需要使用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.退出。



 类似资料:
  • 问题内容: 我试图执行一个脚本,该脚本执行一个EXPECT脚本和一个生成的进程,其中包含退出代码。但是我无法将生成的进程的退出代码获取到主脚本。作为成功,我总是零。 期望脚本是: 产生的脚本: 执行Expect脚本: 问题是我无法获得生成的退出返回代码以期望脚本。我希望生成脚本的退出代码3到主脚本,并且主脚本应该以退出代码3退出。 请帮助我将生成的退出代码获取到主脚本。 问题答案: 在格伦的帮助下

  • 我试图执行一个脚本,该脚本执行一个EXPECT脚本和一个包含退出代码的派生进程。但是我无法将生成的进程的退出代码获取到主脚本。我总是得到零作为成功。 expect脚本是: 衍生脚本: Expect脚本的执行: 问题是,我无法获取生成的退出返回代码以期望脚本。我希望生成的脚本的退出代码为3到主脚本,主脚本应该以退出代码3退出。 请帮助我将生成的退出代码添加到主脚本。

  • 问题内容: 目的:使用指定的参数调用外部应用程序,然后退出脚本。 以下脚本无法正常工作: 尝试过的事情:-不分离。提前谢谢了 问题答案: 从node.js文档中: 默认情况下,父级将等待分离的子级退出。为防止父级等待给定的子级,请使用child.unref()方法,并且父级的事件循环将其引用计数中不包括该子级。 使用detached选项启动长时间运行的进程时,除非该进程提供了未连接到父级的stdi

  • 在退出脚本(TCL/Bash)之前,如何确保所有后台进程都已完成执行。 我想把我所有的后台进程PID写到一个pidfile中。然后在最后pgrep PID file,看看在我退出之前是否还有进程在运行。 有什么更简单的方法吗?而TCL有没有具体的办法做到这一点呢?

  • 当我在PyCharm中手动停止脚本时,进程以退出代码137结束。但是我没有停止剧本。还有出口代码137。有什么问题? Python版本是3.6,在运行xgboost.train()方法时进程完成。

  • 我想运行"sudo whoami"命令在PHP脚本。 我已经添加了下一行到 /etc/sudoers Apache ALL=(ALL)NOPASSWD:/usr/bin/whoami 然后执行脚本 $result为空$return_var==1 终端命令 返回“root”。 PHP 5.6.38 CentOS 7.5。1804