Fish 3.3.1 쉘: 문자열 일치 결과를 무효화하는 방법은 무엇입니까?

Fish 3.3.1 쉘: 문자열 일치 결과를 무효화하는 방법은 무엇입니까?

위와 같이.

기본적으로 나는 다음과 같은 것을 구현하고 싶습니다.

if not match then
  do these things
else
  do these other things
fi

감사해요

답변1

일치의 의미에 따라 다르지만 "정확한 일치"를 의미하는 경우 string match간단한 매개변수와 함께 내장 함수를 사용할 수 있습니다.

if not string match --quiet -- "some_string" $some_argument
    echo no match
else
    echo match
end

문자열 내에서 일치시키려면 glob in some_string또는 정규 표현식을 와 함께 사용할 수 있습니다 string match --regex.

답변2

대안으로 not string match -q -- $pattern $string(예:@Zanchey가 언급했습니다.) 다음을 수행할 수도 있습니다.

if string match -vq -- $pattern $string
  echo no match
else
  echo match
end

( -vin 과 같 grep거나 --invert( GNU grep와 같은 --invert-match) 일치를 반대로 합니다.)

여러 문자열(예: 여러 요소가 포함된 목록)에 대해 패턴을 일치시킬 때 $string또는 문자열을 전혀 일치하지 않을 때( 빈 목록) $string차이점을 확인할 수 있습니다 .

if not string match -q -- $pattern $string1 $string2
  echo none of the strings matched
else
  echo at least one the strings matched
end
if string match -vq -- $pattern $string1 $string2
  echo at least one of the strings did not match
else
  echo all the strings matched
end

관련 정보