Bash 使用if语句进行精确匹配?部分匹配也需要做精确匹配吗
我的脚本中有以下命令。它运行良好,只有一个例外;它还匹配部分条目。我希望比赛准确无误Bash 使用if语句进行精确匹配?部分匹配也需要做精确匹配吗,bash,if-statement,pattern-matching,partial,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,它们都是匹配的。 我希望确保条目完全匹配,而不是部分匹配。所以 这应该
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
在末尾添加空格或结束锚,以便进行正则表达式比较,以确保没有部分单词匹配:
a='mary jane uger dodo baba'
b='mary'
c='ma'
# will match
[[ "$a" =~ "$b"( |$) ]]
# won't match
[[ "$a" =~ "$c"( |$) ]]
用
==
代替=~
@devnull:我相信你误解了这个问题。你分配给a
的任务无效。它将尝试运行命令<代码>简写>代码>变量<代码> A<代码>在其环境中设置为<代码>玛丽<代码>。是的,在这种情况下,==将不起作用。考虑添加<代码> BASH版本的输出;将解译为您的问题。祝你好运。。这没什么区别。,,。它仍然与部分匹配。。我试过了,没有什么不同,这意味着你在复制这个脚本时犯了一些错误。请参阅此工作演示:echo$a if[[“$a”=~“$1”(|$)]&&&[-n“$1]”;然后,echo与else匹配echo与fiDon不匹配,不能在注释中放置代码。我给你提供了一个工作演示。您也可以在同一个演示中提供您的代码,并演示它是如何工作的。现在我的if语句根本不起作用。[[“$a”=~“$c”(|$)]]很酷这很管用,谢谢Steven。。我必须删除变量周围的引号。如果有机会,你能告诉我包括“\>”有什么用吗?
z='\>'
[[ $a =~ $b$z ]] # true
[[ $a =~ $c$z ]] # false