我是新手。我已经阅读了测试的文档,并说
EXPRESSION1 -o EXPRESSION2
EXPRESSION1或EXPRESSION2为真
我在shell中运行它:
[ false -o false ] && echo "what happened?"
并打印字符串,为什么? :(
答案 0 :(得分:2)
false
语句中的 test
只是一个字符串,非空字符串是真实的。相反:
$ false && false && echo 'Nope'
$ echo $?
1
答案 1 :(得分:2)
来自man test:
-n STRING
STRING的长度不为零STRING
等效于-n STRING
false
被解释为字符串。因此[ false -o false ]
是[ -n false -o -n false ]
。由于字符串false
的长度非零(具有5个字符),因此表达式为true。