Fish
Fish 3.3.1 shell:如何否定字元串匹配的結果?
如上。
基本上我想實現類似的東西
if not match then do these things else do these other things fi
謝謝
這取決於你所說的匹配是什麼意思,但如果你的意思是“完全匹配”,你可以使用
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
。
作為
not string match -q -- $pattern $string
(如@Zanchey 所述)的替代方案,您還可以執行以下操作:if string match -vq -- $pattern $string echo no match else echo match end
(
-v
如 ingrep
或--invert
(如 GNUgrep
’s--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