Fish

Fish 3.3.1 shell:如何否定字元串匹配的結果?

  • February 5, 2022

如上。

基本上我想實現類似的東西

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 insome_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(如 GNU grep’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

引用自:https://unix.stackexchange.com/questions/689354