我想根据这个方法在字符串中查找子字符串。 但是由于一些原因,它无法处理变量: str="abcd"; substr="abc"; if [[ "${substr}"* == ${str} ]] then echo "CONTAINS!"; fi
在参考手册的《条件结构》章节中,关于[[ ... ]]的文档,你会读到以下内容: 当使用==和!=操作符时,操作数右侧的字符串被视为模式,并根据下面在模式匹配中描述的规则进行匹配,就像启用了extglob shell选项一样。 (强调是我的)。 因此你需要将你的通配符模式放置在==操作符右侧:if [[ $str == "$substr"* ]]; then 请注意,左侧不需要加引号,但是右侧的$substr部分需要加引号,以防它包含通配符,如*、?、[...]、+(...)等。
==
之后。 - user4453924