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 insome_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(GNUgrepなど--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

関連情報