bash - bash 中的 OR 逻辑运算符

标签 bash logical-operators

我有一个非常愚蠢的问题,但无法解决它

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/

相关文章:

bash - 在 msys bash 上包含换行符时 PS1 命令替换失败

bash - bash(配置文件)中类似数组的数据结构?

java - 为什么 & 0xff 应用于字节变量

c - 具有增量和逻辑运算符的复杂表达式的意外行为

c++ - C++中是否有 "normal"一元逻辑运算符

regex - Bash 参数替换困惑(pdfgrep、正则表达式、换行符等)

linux - sed 无法处理 bash 脚本中的变量;请求一个文件。简单例子

bash - 在不接触磁盘的情况下从 tar.gz 中提取文件

javascript - 为什么 JavaScript 在条件语句中同时允许 &&(逻辑)和 &(按位)?

python - 为什么 "if not (a and b)"比 "if not a or not b"快?