-a 및 -o는 표현식에서 어떻게 작동합니까?

-a 및 -o는 표현식에서 어떻게 작동합니까?

나는 "테스트"를 위해 매뉴얼 페이지를 사용하고 있습니다. 나는 다음 두 줄을 제외한 모든 것을 이해합니다. 누군가 이것을 실제로 사용하는 방법에 대한 예를 줄 수 있습니까? 지금까지 나는 1차원 테스트(즉, 내 테스트에서는 x = y와 같은 것)를 사용해 왔기 때문에 비교 표현식이 내 머릿속에 있습니다. 많은 의미가 있습니다. 누군가 나에게 예제나 사용 사례를 보여주면 이해할 수 있을 것 같습니다.

   EXPRESSION1 -a EXPRESSION2
          both EXPRESSION1 and EXPRESSION2 are true

   EXPRESSION1 -o EXPRESSION2
          either EXPRESSION1 or EXPRESSION2 is true

답변1

-a-o두 표현식을 연결 하면독립적으로 사용할 수 있는 완전한 표현입니다 test. 그러므로

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

성공하면

test "$x" = foo

또는

test "$x" = bar

성공할 것이다, "$x"foo또는 bar.

모호할 수도 있으니-a그리고 -o더 이상 사용되지 않습니다, 그리고 쉘의 연산자를 사용해야 합니다:

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

더 일반적으로 다음과 같이 작성됩니다.

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

바라보다POSIX sh 조건에서 논리적 OR 평가의 예상치 못한 결과-o혼란스럽게 사용된 예입니다.

관련 정보