为什么"真实"和"假"测试都是真的?

3 linux bash shell command-line-interface

单词"true"和"false"是bash的特殊单词(builtins).如果在if测试中使用,它们可以直观地预期:

$ if true; then echo "true"; else echo "false"; fi
true
$ if false; then echo "true"; else echo "false"; fi
false
Run Code Online (Sandbox Code Playgroud)

但是,这两个测试:

$ [[ true ]] && echo "true" || echo "false"
true
$ [[ false ]] && echo "true" || echo "false"
true
Run Code Online (Sandbox Code Playgroud)

两者都是真的.为什么?

Ry-*_*Ry- 9

[[ … ]]在这种情况下,等同于test,即test truetest false.查看测试手册(1):

-n STRING STRING的长度非零

STRING 相当于 -n STRING

true并且false都是非空字符串.