为什么用-o进行shell测试似乎返回了错误的结果?

时间:2018-11-12 01:51:55

标签: shell

我是新手。我已经阅读了测试的文档,并说

  

EXPRESSION1 -o EXPRESSION2

     

EXPRESSION1或EXPRESSION2为真

我在shell中运行它:

[ false -o false ] && echo "what happened?"

并打印字符串,为什么? :(

2 个答案:

答案 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。