我想根据this solution在字符串中找到子字符串。
但由于某种原因,它不适用于变量:
str="abcd";
substr="abc";
if [[ "${substr}"* == ${str} ]]
then
echo "CONTAINS!";
fi
答案 0 :(得分:5)
在参考手册section Conditional Constructs中,您将阅读[[ ... ]]
的文档:
当使用
==
和!=
运算符时,运算符右侧的字符串被视为模式,并根据{{{ 3}},就像启用了extglob
shell选项一样。
(强调是我的)。
所以你需要将你的glob模式放在==
运算符的右边:
if [[ $str == "$substr"* ]]; then
请注意,左侧不需要引用,但右侧的部分$substr
需要引用,以防它包含像{{一样的全局字符1}},*
,?
,[...]
等