【问题标题】:start-stop-daemon alway returns successstart-stop-daemon 总是返回成功
【发布时间】:2016-07-03 01:25:21
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: bash output daemon


    【解决方案1】:

    您的$?$CMD$FILE 一起在当前shell 的上下文中展开。

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

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

    【讨论】:

    • 哇,我不敢相信这是问题的根源!非常感谢,这让我和其他许多人都发疯了!
    【解决方案2】:

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

    【讨论】:

    • 已编辑问题。如果失败,则输出应为 1 等。
    • 您是否尝试运行此命令“ start-stop-daemon --start --quiet --background \ --startas /bin/bash -- -c "$CMD;" 然后运行 ​​echo $? 看看它会发生什么。如果你的第一个命令运行,那么它将是 0。否则它将是非零。
    • 不给出CMD的退出码,给出start-stop-daemon的退出码。也就是说,如果它能够成功尝试命令,则返回 0,但这并没有说明命令本身是否真的有效。
    猜你喜欢
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 2013-07-24
    • 1970-01-01
    • 2014-10-25
    相关资源
    最近更新 更多