小编EAG*_*G08的帖子

在条件中使用通配符匹配字符串的开头

试图让一个变量遇到一个长度不同的文本字符串。字符串中重要的部分是前几个字符。

var1=hello  
if [ $var1 == hello ]; then  
    echo success  
fi
Run Code Online (Sandbox Code Playgroud)

或者

var1=hello  
if [ $var1 == h*o ]; then  
    echo success  
fi
Run Code Online (Sandbox Code Playgroud)

输出:成功

但由于我关心前 3 个字符左右,这听起来合乎逻辑,但不起作用:

var1=hello  
if [ $var1 == hel* ]; then  
    echo success  
fi
Run Code Online (Sandbox Code Playgroud)

输出:-bash: [: 参数太多

由于我只关心前几个字符,我可以这样做:

var1=hello 
if [ ${var1:0:3} == hel ]; then 
    echo success  
fi
Run Code Online (Sandbox Code Playgroud)

那会起作用,但我正在寻找解释为什么我会收到该错误以及可能的更好的书面解决方案。

bash wildcards conditional-statements

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

bash ×1

conditional-statements ×1

wildcards ×1