Bash로 복잡한 표현식을 테스트하려면 어떻게 해야 하나요?

Bash로 복잡한 표현식을 테스트하려면 어떻게 해야 하나요?

다음과 같은 간단한 표현만 할 수 있습니다.1=1 and 0=1

test 1 = 1 -a 0 = 1 

그런데 와 같은 복잡한 표현은 어떻게 해야 할까요 1=1 and (0=1 or 1=1)?

답변1

여러 테스트 호출을 사용하십시오.

test 1 = 1 && test 0 = 1 -o 1 = 1

또는 [[:

[[ 1 = 1 && (0 = 1 || 1 = 1) ]]

답변2

괄호는 이스케이프 처리해야 하고 용어는 공백으로 구분해야 한다는 점을 기억하고 주의해서 testor [...를 사용할 수 있습니다 .]

if [ \( a = a \) -a \( a = b -o b = b \) ]
then echo Yes
else echo No
fi

그것은 나에게 '예'를 반영합니다. 하지만 일반적으로 Bash 및 Korn 쉘 [[... ]]연산자를 대신 사용하는 것이 더 쉽습니다. 탈출을 많이 할 필요는 없습니다.

답변3

질문에 대한 답변은 이미 나와 있지만 고려할 수 있는 몇 가지 스타일 팁이 있습니다(또는 거부할 수도 있습니다 :-)).

당신이 그것을 작성하고 혼란스럽다면 다음과 같이 할 수도 있습니다.

  • 필요하지 않더라도 extra()를 사용하면 더 명확해질 수 있습니다.
  • 또한 많은 및 문 대신 중첩 루프를 사용할 수도 있습니다.

답변4

Florian은 위에서 대부분 정확하지만 bash에는 변수를 비교할 때 조금 더 좋은 산술 확장도 있다는 점을 명심하십시오.

보다여기더 많은 정보를 위해서.

관련 정보