或Solaris中的Shell脚本中的条件

时间:2018-03-30 09:35:50

标签: bash shell solaris

当我在Solaris bash中运行此代码时:

a=false;
b=false;

if [ $a -o $b ] ; then
    echo "_True"
else
    echo "_False"
fi

结果:

  

_True

该脚本的输出是否应为假?

如果我将脚本修改为以下内容:

a=false;
b=false;

if [ $a = true -o $b = true ] ; then
    echo "_True"
else
    echo "_False"
fi

结果:

  

_False

但这并不是一个很好的编码实践来写" $ a = true"。

拜托,我能知道这里有什么问题吗?什么是解决方案?

1 个答案:

答案 0 :(得分:5)

[命令将所有非空字符串视为true。因此,使用空字符串表示false,而不是字符串"false"。并记得引用变量。

a=
b=

if [ "$a" -o "$b" ]; then
    echo "_True"
else
    echo "_False"
fi

另一种选择是使用truefalse命令,而不是[

a=false
b=false
if $a || $b; then
    echo "_True"
else
    echo "_False"
fi