当我在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"。
拜托,我能知道这里有什么问题吗?什么是解决方案?
答案 0 :(得分:5)
[
命令将所有非空字符串视为true。因此,使用空字符串表示false,而不是字符串"false"
。并记得引用变量。
a=
b=
if [ "$a" -o "$b" ]; then
echo "_True"
else
echo "_False"
fi
另一种选择是使用true
和false
命令,而不是[
。
a=false
b=false
if $a || $b; then
echo "_True"
else
echo "_False"
fi