寻找if / else语句的一些帮助。我有2个变量,我想要一个if语句来查看我是否可以匹配模式。
var1="15"
var2="1|2|3|4|5"
if [[ $var1 =~ $var2 ]]
then
matches
else
doesn't match
fi
当我尝试时,这似乎匹配。我觉得我的语法错了。我想找一个15,而不是1或5。
答案 0 :(得分:1)
来自help [[
:
当使用`=〜'运算符时,运算符右侧的字符串 匹配为正则表达式。
你的语法很好,如果有点奇怪。我个人会自己使用范围[1-5]
。
var2="[1-5]"
答案 1 :(得分:1)
以下行不正确:
var2=1|2|3|4|5
垂直条在bash中有特殊含义。引用字符串:
var2='1|2|3|4|5'
如果您想匹配整个字符串,则必须包含^
以匹配开头,$
以匹配结尾。否则,任何匹配的子字符串都可以满足条件。
if [[ $var =~ ^($var2)$ ]]
答案 2 :(得分:0)
egrep -q "[1-5]" <<< 15 && echo matches || echo "doesn't match"