0

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

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

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

但是,当我在生产中运行它时,我得到bad 0. 因此,即使返回码似乎是 0,if测试似乎也返回了false。这里发生了什么?

4

2 回答 2

0

There's a simpler way to do it (no need to treat $? and creating a copy of the variable):

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

If myProcess is coded properly, that should works. If not, paste the exact output/errors in your original post.

This short and concise way is named boolean logic

于 2013-05-05T21:49:31.350 回答
0

看来问题在于使用了太多引号,可能与==. 以下修改后的代码似乎工作正常:

myProcess
ret=$?
if [  ${ret} -eq 0 ]
then
    echo good
else
    echo bad "${ret}"
fi
于 2013-05-06T12:53:04.883 回答