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

joh*_*ith 2 bash

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

   EXPRESSION1 -a EXPRESSION2
          both EXPRESSION1 and EXPRESSION2 are true

   EXPRESSION1 -o EXPRESSION2
          either EXPRESSION1 or EXPRESSION2 is true
Run Code Online (Sandbox Code Playgroud)

Ste*_*itt 5

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

\n
test "$x" = foo -o "$x" = bar\n
Run Code Online (Sandbox Code Playgroud)\n

成功,如果

\n
test "$x" = foo\n
Run Code Online (Sandbox Code Playgroud)\n

或者

\n
test "$x" = bar\n
Run Code Online (Sandbox Code Playgroud)\n

会成功, "$x"要么foo要么bar

\n

这可能是不明确的,因此-a-o已被弃用,并且应使用 shell\xe2\x80\x99s 运算符来代替:

\n
test "$x" = foo || test "$x" = bar\n
Run Code Online (Sandbox Code Playgroud)\n

更常见的是,这会写成

\n
[ "$x" = foo ] || [ "$x" = bar ]\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n