Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用if语句进行精确匹配?部分匹配也需要做精确匹配吗_Bash_If Statement_Pattern Matching_Partial - Fatal编程技术网

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