如何在 Linux 命令行上返回特定的退出代码?

如何在 Linux 命令行上返回特定的退出代码?

我有一个程序,用于控制一个长时间运行的进程,该进程通过远程计算机上的 ssh 运行。我经常会在进程中途断开连接,因此我将调用方式从以下方式更改为:

my-long-cmd

my-long-cmd; echo $? > /tmp/my.cmd.status

这是有效的;该过程本身会启动许多子过程等,因此即使连接中断,它也会继续运行,并且我的脚本可以定期重新连接到机器并检查文件是否存在(因此,机器已完成配置),如果是,则查看它是否成功退出。

然而这也意味着如果我断开连接,我总是只能看到echossh 库上的命令的退出状态。我尝试过类似的事情echo $? && return $?,但return只在脚本中有效。有没有简单的方法可以做到这一点?

答案1

使用exit后跟您想要的值。零表示成功,非零表示失败。这通常在脚本中使用,并终止退出的(子)shell。

如果要捕获命令的状态,请将其分配$?给变量。这样您可以在显示该值后保存它。

相关内容