bash - 使用 if 语句精确匹配 ?部分匹配也需要完全匹配

标签 bash if-statement pattern-matching partial

我的脚本中有以下命令。除了一个异常(exception),它工作得很好;它还匹配部分条目。我希望匹配准确。

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

最佳答案

在末尾放置一个空格或结束 anchor 以进行正则表达式比较,以确保没有部分单词匹配:

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

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

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

关于bash - 使用 if 语句精确匹配 ?部分匹配也需要完全匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23086133/

相关文章:

pattern-matching - 证明匹配语句

bash - 并行化 awk 脚本

database - 由于错误,Docker postgres 启动自动化无法创建数据库

bash - 无法使用sdkman构建dockerfile

c# - 压缩 if-elseif-else 语句以节省比较

java - for each 循环中 if 语句的返回值

如果不是或使用两个命令进行 Bash

string - 如何在lua中string.find方括号字符?

haskell - 通配符上的模式匹配

mysql - 在 bash 中将 stdout 重定向到 mysql