-a 和 -o 在表达式中如何工作?

-a 和 -o 在表达式中如何工作?

我正在使用手册页进行“测试”。除了以下两行之外,我明白了所有内容。有人能给我一个如何实际使用它的例子吗,因为到目前为止我一直在使用一维测试(即在我的测试中是 x = y 之类的东西),所以比较表达式在我的脑海中没有多大意义。我想如果有人能给我展示一个例子或用例我就会明白。

   EXPRESSION1 -a EXPRESSION2
          both EXPRESSION1 and EXPRESSION2 are true

   EXPRESSION1 -o EXPRESSION2
          either EXPRESSION1 or EXPRESSION2 is true

答案1

-a-o连接两个表达式,IE可以独立使用的完整表达式test。因此

test "$x" = foo -o "$x" = bar

成功,如果

test "$x" = foo

或者

test "$x" = bar

会成功的,IE "$x"foobar

这可能是不明确的,所以-a-o已弃用,并且应该使用 shell 的运算符:

test "$x" = foo || test "$x" = bar

更常见的是,这会写成

[ "$x" = foo ] || [ "$x" = bar ]

POSIX sh 条件中逻辑或评估的意外结果-o以令人困惑的方式使用的示例。

相关内容