bash [[ = ]] 동작

bash [[ = ]] 동작

man bash:

[[표현식]]
[...] 표현식은 조건식 아래에 설명된 주요 요소로 구성됩니다. [[ 및 ]] 사이의 단어에는 단어 분할 및 경로 이름 확장이 적용되지 않습니다.
[...] == 및 != 연산자를 사용할 때 연산자 오른쪽에 있는 문자열은 패턴으로 간주되어 다음과 같이 일치됩니다. 패턴 설명된 규칙을 일치시킵니다.

전체 섹션에서는 =단일 상황을 언급하지 않습니다.

조건식
[...]
string1 == string2
string1 = string2는
문자열이 같으면 참입니다. =는 POSIX 준수를 보장하기 위해 테스트 명령과 함께 사용해야 합니다.

이 설명에서 나는 예상했다

[[ a = $cmpstring ]]

문자열 합계가 같은지 확인하세요.

[[ a == $cmpstring ]]

패턴 일치를 확인합니다. 그러나 그것은 진실이 아니다:

> [[ a == ? ]]; echo $?
0
> [[ a = ? ]]; echo $?
0
> [[ a == "?" ]]; echo $?
1

제가 뭔가 잘못 이해한 걸까요, 아니면 bash 매뉴얼 페이지에서 언급하는 것을 잊어버린 걸까요 =?

답변1

===안에 있을 때도 마찬가지다 [[...]]. 최신 man페이지 에 따르면 SHELL GRAMMAR>> Compound Commands아래에 있습니다 [[ expression ]].

The = operator is equivalent to ==

더 아래 CONDITIONAL EXPRESSIONS:

string1 == string2
string1 = string2
        True  if  the  strings  are equal.  = should be used with the test command
        for POSIX conformance. When used with the [[ command, this performs pattern
        matching as described above (Compound Commands).

bash info페이지:

여기에 이미지 설명을 입력하세요.

관련 정보