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