测试进程返回状态会在ubuntu上返回意外结果

时间:2013-05-05 21:44:06

标签: shell ubuntu return

这是我在ubuntu机器上执行的一段shell脚本代码:

myProcess
ret="$?"
if [  "${ret}" == "0" ]
then
   echo good
else
   echo bad "${ret}"
fi

所以逻辑非常简单:如果myProcess返回非零退出状态,那么它很糟糕,否则很好。我通过将它隔离到一个单独的脚本并从命令行运行它来测试这段代码。当myProcess返回0时,我按预期获得good

但是,当我在制作中运行它时,我得到bad 0。因此,即使返回代码似乎为0,if测试似乎也会返回false。这是怎么回事?

2 个答案:

答案 0 :(得分:0)

有一种更简单的方法(无需处理$?并创建变量的副本):

if myProcess; then
   echo "good"
else
   echo "bad" >&2
fi

如果myProcess编码正确,那应该有效。如果没有,请在原始帖子中粘贴确切的输出/错误。

这种简洁明了的方法被命名为布尔逻辑

答案 1 :(得分:0)

似乎问题在于使用过多的引号可能与==结合使用。以下修改后的代码似乎工作正常:

myProcess
ret=$?
if [  ${ret} -eq 0 ]
then
    echo good
else
    echo bad "${ret}"
fi