我有一个程序来控制一个远程机器上运行ssh的长时间运行的进程。 通常情况下,我会在这个过程中断开连接,所以我改变了这样的调用:
my-long-cmd
至
my-long-cmd; echo $? > /tmp/my.cmd.status
这工作; 该进程本身启动了一些subprocess等,所以即使连接中断,它仍然继续运行,我的脚本可以定期重新连接到机器,并检查文件是否存在(从而机器已完成configuration),如果是的话,看看它是否成功退出。
但是,这也意味着如果我没有断开连接,我将永远只能看到通过SSH库echo命令的退出状态。 我试图做一些像echo $? && return $? echo $? && return $? 但return只能在脚本中使用。 是否有捷径可寻?
使用exit后跟你想要的值。 零被视为成功,非零失败。 这通常在脚本中使用,并终止退出的(子)shell。
如果要捕获命令的状态,请分配$? 到一个variables。 这允许您在显示之后保存该值。