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