如何测试一个字符串是否包含 fish shell 中的另一个字符串?

How can I test whether a string contains another string in fish shell?

如何测试 fish shell 中是否存在子字符串?例如,在 switch 表达式中:

 set myvar "a long test string"
 switch $myvar
 case magical-operator-here "test string" 
     echo 'yep!'
 case '*'
     echo 'nope!'
 end

*是通配符,所以

set myvar "a long test string"
switch $myvar
case "*test string" 
    echo 'yep!'
case '*'
    echo 'nope!'
end

如果你想测试它是否结束那个字符串。如果它也可以出现在中间某处,则在最后添加另一个*

另外,从 2.3.0 开始,fish 有一个 string 内置命令和 match 子命令,所以你也可以使用 string match -q -- "*test string" $myvar。它还支持带有“-r”选项的 pcre 风格的正则表达式。