启动停止守护进程总是 returns 成功

start-stop-daemon alway returns success

我在 BASH 脚本中有以下代码:

 start-stop-daemon --start --quiet --background \
    --startas /bin/bash -- -c "$CMD; exec echo $?> $FILE"

其中 CMD 是一些命令字符串,FILE 是输出文件位置。但出于某种原因,FILE 中的输出始终为 0,即使它应该给出不同的数字(1 表示错误等)。

这是为什么,我该如何解决?

执行回显 $?如果您的最后一个命令 运行 成功,这将打印 0。这就是它在文件中打印 0 的原因。你想达到什么目的。

您的 $? 在当前 shell 以及 $CMD$FILE 的上下文中得到扩展。

要解决此问题,您必须像 $? 一样转义它,即

...  /bin/bash -c "$CMD; exec echo $? >$FILE"