"if" 문의 정규식 및 와일드카드

"if" 문의 정규식 및 와일드카드

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
  • 예상대로 작동해야 합니다.~하지 않는 한확장은 $fsglob 표현식으로 일치될 수 있습니다.
    • 예를 들어 if then return은 3자 이상을 포함하는 경우 fs='???'return을 수행합니다 .$exitfn

너무 길어요.- 당신이 원하는

  [[ "$exitfn" == *"$fs"* ]] && return

관련 정보