如何确定pexpect发送的命令的退出状态代码

时间:2014-01-17 05:31:26

标签: expect pexpect

在以下代码段中,如何找到make的退出代码?具体来说,我需要知道make是否失败或成功。感谢您提供任何意见。

process = pexpect.spawn("/bin/bash")
process.expect("make\r")

2 个答案:

答案 0 :(得分:4)

pexpect不知道make命令 - 它只是向bash发送文本。因此,您需要使用bash的机制来确定退出代码 - $?的值。所以你想要这样的东西:

process.sendline("make") # Note: issue commands with send, not expect
process.expect(prompt)
process.sendline("echo $?")
process.expect(prompt)
exitcode = process.before.strip()

答案 1 :(得分:2)

我不得不在我的最新项目中使用pexpect并想要获取退出代码,无法轻松找到解决方案,因为这是google的最高结果,我正在为此添加解决方案。

process = pexpect.spawn(command, cwd=work_dir)
process.expect(pexpect.EOF)
output = process.before

process.close()
exit_code = process.exitstatus

我也保存了输出,因为我正在运行bash脚本,并且退出代码保存在exit_code变量中。