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)
两者都是真的.为什么?
[[ … ]]在这种情况下,等同于test,即test true和test false.查看测试手册(1):
-n STRINGSTRING的长度非零
STRING相当于-n STRING
true并且false都是非空字符串.