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페이지:

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

관련 정보