我有一个非常愚蠢的问题,但无法解决它
if [[ false || false ]] ; then
echo 'true'
else
echo 'false'
fi
根据 http://tldp.org/LDP/abs/html/comparison-ops.html
-o logical or
exp1 -o exp2 returns true if either exp1 or exp2 is true.
These are similar to the Bash comparison operators && and ||, used within double brackets. [[ condition1 && condition2 ]]
所以如果两者都是假的那么它应该返回假?那为什么它打印“真”呢?
最佳答案
你应该运行那些不作为条件命令 '[[ ]]' 的一部分的:
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
关于bash - bash 中的 OR 逻辑运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18120426/