Jay*_*shi 2 bash shell solaris
当我在Solaris bash中运行此代码时:
a=false;
b=false;
if [ $a -o $b ] ; then
echo "_True"
else
echo "_False"
fi
Run Code Online (Sandbox Code Playgroud)
结果:
_真正
脚本的输出不应该是假的吗?
如果我将脚本修改为这样的:
a=false;
b=false;
if [ $a = true -o $b = true ] ; then
echo "_True"
else
echo "_False"
fi
Run Code Online (Sandbox Code Playgroud)
结果:
_假
但是编写"$ a = true"并不是一个好的编码习惯.
拜托,我可以知道这里有什么问题吗?什么是解决方案?
该[命令将所有非空字符串视为true.因此,使用空字符串来表示false,而不是字符串"false".并记得引用变量.
a=
b=
if [ "$a" -o "$b" ]; then
echo "_True"
else
echo "_False"
fi
Run Code Online (Sandbox Code Playgroud)
另一个选择是使用true和false命令,而不是[.
a=false
b=false
if $a || $b; then
echo "_True"
else
echo "_False"
fi
Run Code Online (Sandbox Code Playgroud)