hud*_*dac 2 string bash if-statement wildcard
我想根据此解决方案在字符串中找到子字符串。
但是由于某种原因,它不适用于变量:
str="abcd";
substr="abc";
if [[ "${substr}"* == ${str} ]]
then
echo "CONTAINS!";
fi
Run Code Online (Sandbox Code Playgroud)
在参考手册的条件构造部分中,您将阅读以下文档[[ ... ]]
:
当使用
==
and!=
运算符时,该运算符右边的字符串将被视为一个模式,并根据以下Pattern Matching中所述的规则进行匹配,就好像extglob
启用了shell选项一样。
(强调是我的)。
因此,您需要将glob模式放在运算符的右侧==
:
if [[ $str == "$substr"* ]]; then
Run Code Online (Sandbox Code Playgroud)
请注意,左侧的需求不被引用,但部分$substr
的右侧需求被引用,如果它包含水珠字符,如*
,?
,[...]
,+(...)
,等。