使用if语句完全匹配?部分匹配也需要完全匹配

时间:2014-04-15 14:07:00

标签: bash if-statement pattern-matching partial

我的脚本中有以下命令。除了一个例外,它工作正常;它也匹配部分条目。我希望这场比赛准确无误。

a=mary jane uger dodo baba
b=mary
c=ma    

if [[ "$a" =~ "$b" ]] && [ -n "$1" ]; then
    echo it matches
else
    echo it does not match
fi

所以无论在if语句中我是否使用值$ b或$ c它们都匹配。 我想确保条目完全匹配而不是部分匹配。所以 这应该有效,并给出完全匹配。

if [[ "$a" =~ "$b" ]]  

这不应该是部分匹配

if [[ "$a" =~ "$c" ]]

有人可以帮忙吗?

这是我的确切代码

if [[ "$a" =~ "$b" ]]; then
      echo something     
fi

2 个答案:

答案 0 :(得分:1)

最后放置一个空格或结尾锚点进行正则表达式比较,以确保没有部分单词匹配

a='mary jane uger dodo baba'
b='mary'
c='ma'

# will match
[[ "$a" =~ "$b"( |$) ]]

# won't match
[[ "$a" =~ "$c"( |$) ]]

答案 1 :(得分:0)

z='\>'
[[ $a =~ $b$z ]] # true
[[ $a =~ $c$z ]] # false

does bash support word boundary regular expressions?