Bash에서 [ 대 [[(단일 괄호와 이중 괄호)를 언제 사용해야 합니까? [복사]

Bash에서 [ 대 [[(단일 괄호와 이중 괄호)를 언제 사용해야 합니까? [복사]

중복 가능성:
단일 또는 이중 괄호 사용 - bash

단일 스텐트는 언제 사용해야 합니까?[

언제 이중 괄호를 사용해야 합니까?[[

둘 다 POSIX를 준수합니까?

답변1

단일 대괄호는 일반적으로 외부 명령으로 구현되는 전통적인 형식입니다. 이중 괄호는 다음과 같은 bash(및 ksh 및 zsh) 확장입니다.아니요POSIX에서 사용되며 별도의 프로세스를 사용하지 않고 구문이 더 깔끔하다는 장점이 있습니다(아래 참조).

구문 차이점 중 하나는 리디렉션 연산자로 읽히지 않도록 <and >연산자(참고: 표준 POSIX 아님)를 이스케이프하거나 따옴표로 묶을 필요가 없다는 것입니다. 또한 [문자열 중 하나가 비어 있거나 하이픈으로 시작하는 경우에는 몇 가지 트릭이 필요합니다. 이것이 바로 스크립트가 이와 같은 작업을 수행하는 것을 보는 이유입니다 . [ "x$ASD" == xValue ]반면 bash에서는 간단히 사용할 수 있습니다 [[ $ASD == Value ]]. 한 가지만 테스트하는 POSIX 호환 명령에는 "x" 트릭이 꼭 필요한 것은 아닙니다.이 문제더 알아보기.

배쉬 FAQ차이점에 대한 자세한 내용. 이것은 또한답장을 받았어요다른 스택 교환 사이트에서.

답변2

오직[( test)POSIX에 있습니다. [[다음을 제외하고예약어구현에서는 사용할 수 있습니다. Bash는 향상된 테스트 연산자 역할을 합니다 [[. 해당 스크립트를 특별히 작성하는 경우 사용하기가 더 강력하고 안전 하므로 bash항상 Bash를 사용하십시오 . 단, POSIX를 대상으로 하는 경우 매개변수를 반드시 인용 하여 사용해야 하며 매개변수를 4개 이상 사용하지 마세요 .[[[sh[[

관련 정보