반응형

출처 : https://stackoverflow.com/questions/20449680/boolean-operators-a-o-in-bash

Bash에서 Boolean 연산자( &&, -a, ||, -o )

Unix 연산자 &&, -a, ||, -o 사이에 차이점을 설명해 주실수 있으신가요?

2가지 타입의 사용법에 제약은 무엇인가요?

간단히 &&|| 연산자는 조건에서 flag를 사용할 때만 사용되나요?

다음처럼 :

[ "$1" = "yes" ] && [ -r $2.txt ]

[ "$1" = "yes" -a $2 -lt 3 ]

입니다.

2개의 답변 중 1개의 답변

경험상 법칙 : 대괄호 안에 -a-o를 사용하고 밖에서는 &&||를 사용합니다.

shell 구문과 [명령의 구문 사이의 차이점을 이해하는 것이 중요합니다.

  • &&||는 shell 연산자입니다. 두 명령의 결과를 결합하는 데 사용됩니다. 그것들은 shell 구문이기 때문에 특별한 구문적 의미가 있으며 명령의 인수로 사용할 수 없습니다.

  • [ 는 특별한 구문이 아닙니다. 실제로 이름 [ 또는 test로 알려진 명령입니다. [ 는 일반적인 명령이므로 -a-oandor 또는 연산자로 사용합니다. &&||는 명령으로 볼 수 없는 쉘 구문이기 때문에 (안에서는) 사용할 수 없습니다.

하지만 기다리십시오! Bash에는 [[ ]] 형식의 더 멋진 테스트 구문이 있습니다. 이중 대괄호를 사용하면 정규식 및 와일드 카드와 같은 항목에 액세스 할 수 있습니다. 대괄호 안에서 &&, ||, <>와 같은 쉘 연산자를 자유롭게 사용할 수도 있습니다. [ 와 달리 이중 괄호 형식은 특수 쉘 구문이기 때문입니다. Bash는 [[ 자체를 파싱하여 [[$ foo == 5 && $ bar == 6]]와 같은 것을 쓸 수 있습니다.

반응형

+ Recent posts