如上。
基本上我想实现类似的东西
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
或正则表达式 with string match --regex
。
答案2
作为替代not string match -q -- $pattern $string
(如@Zanchey 提到),你还可以这样做:
if string match -vq -- $pattern $string
echo no match
else
echo match
end
(-v
如 in 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