我有一个程序,用于控制一个长时间运行的进程,该进程通过远程计算机上的 ssh 运行。我经常会在进程中途断开连接,因此我将调用方式从以下方式更改为:
my-long-cmd
到
my-long-cmd; echo $? > /tmp/my.cmd.status
这是有效的;该过程本身会启动许多子过程等,因此即使连接中断,它也会继续运行,并且我的脚本可以定期重新连接到机器并检查文件是否存在(因此,机器已完成配置),如果是,则查看它是否成功退出。
然而这也意味着如果我不断开连接,我总是只能看到echo
ssh 库上的命令的退出状态。我尝试过类似的事情echo $? && return $?
,但return
只在脚本中有效。有没有简单的方法可以做到这一点?
答案1
使用exit
后跟您想要的值。零表示成功,非零表示失败。这通常在脚本中使用,并终止退出的(子)shell。
如果要捕获命令的状态,请将其分配$?
给变量。这样您可以在显示该值后保存它。