我有一个非常愚蠢的问题,但无法绕过它
if [[ false || false ]] ; then
echo 'true'
else
echo 'false'
fi
根据http://tldp.org/LDP/abs/html/comparison-ops.html
-o logical或
如果exp1或exp2为真,则exp1 -o exp2返回true。
这些类似于Bash比较运算符&&和||,使用 在双括号内。 [[condition1&& condition2]]
所以如果两者都是假的那么它应该返回false?那为什么它打印'真'?
答案 0 :(得分:4)
“假”不是假的。 “false”是非空字符串。默认情况下,非空字符串在[[
中为真。
答案 1 :(得分:4)
您应该运行那些不是条件命令'[[]]'的一部分:
if false || false; then
echo 'true'
else
echo 'false'
fi
至于[[和]]中的测试错误:
if [[ ! 1 || ! 1 ]]; then
echo 'true'
else
echo 'false'
fi
注意[[false]]等同于[[-n false]],这是一个真实的条件。
如果您愿意,可以使用(())进行更明显和有效的条件测试:
if (( 0 || 0 )); then
echo 'true'
else
echo 'false'
fi