if
내 명령문에는 정규식과 와일드카드를 사용하고 있습니다 .
예:
[[ "$exitfn" =~ ^[yY]*$ ]] && return
[[ "$exitfn" == "[yY]*" ]] && return
[[ "$exitfn" == "*$fs*" ]] && return
[[ "$exitfn" == *$fs* ]] && return
*$fs*"
하지만 인용하거나 인용하지 않으면 어떤 어려움이 발생할지 정말 알고 싶습니다 *$fs*
.
=~
에 대해 어떻게 사용하는지 궁금합니다 ==
.
답변1
오른쪽 ==
또는 !=
내부는 다음과 [[...]]
같습니다.글로벌 모드--그리고 문자열 항등 연산자가 아닙니다 ==
.!=
패턴 매칭운영자.
정규식이나 전역 패턴에서 인용된 부분은 리터럴 텍스트로 처리됩니다.
[[ "$exitfn" =~ ^[yY]*$ ]] && return
- 예상대로 작동합니다.
[[ "$exitfn" == "[yY]*" ]] && return
- 변수가 리터럴인 경우에만 반환합니다.[yY]*
[[ "$exitfn" == "*$fs*" ]] && return
- 변수에 별표 뒤에 별표가 오는 내용이 포함된 경우에만
$fs
반환됩니다 .
[[ "$exitfn" == *$fs* ]] && return
- 예상대로 작동해야 합니다.~하지 않는 한확장은
$fs
glob 표현식으로 일치될 수 있습니다.- 예를 들어 if then return은 3자 이상을 포함하는 경우
fs='???'
return을 수행합니다 .$exitfn
- 예를 들어 if then return은 3자 이상을 포함하는 경우
너무 길어요.- 당신이 원하는
[[ "$exitfn" == *"$fs"* ]] && return