如何在bash中使用=~
我正在尝试学习如何在bash中使用re-match opreator,如果我理解得很好,在字符串中搜索字符串将返回true如果字符串具有子字符串,我尝试:如何在bash中使用=~,bash,command-line,terminal,Bash,Command Line,Terminal,我正在尝试学习如何在bash中使用re-match opreator,如果我理解得很好,在字符串中搜索字符串将返回true如果字符串具有子字符串,我尝试: Hello='Hello sr' ; if [[ "$Hello" =~ *Hello*. ]] ; then echo '"Hello" does have the word or sentence "Hello" inside' ; else echo '"Hello&
Hello='Hello sr' ; if [[ "$Hello" =~ *Hello*. ]] ; then echo '"Hello" does have the word or sentence "Hello" inside' ; else echo '"Hello" does not have the word or sentence "Hello" inside ' ; fi
或
这有什么问题?问题在于您的匹配模式
*
匹配字符
中的0个或多个(*
),该字符匹配除换行符以外的任何字符。现在您需要将*Hello*
替换为*Hello.
Hello='Hello sr' ; if [[ "$Hello" =~ .*Hello.* ]] ; then echo '"Hello" does has the word or sentence "Hello" inside' ; else echo '"Hello" doesn'"'"'t has the word or sentence "Hello" inside ' ; fi
我真的很喜欢这个页面,因为它的边栏里有备忘单,底部也解释了你的匹配模式。有了它,您可以了解很多关于您的模式的知识,并更容易地找到bug。问题在于您的匹配模式
*
匹配字符
中的0个或多个(*
),该字符匹配除换行符以外的任何字符。现在您需要将*Hello*
替换为*Hello.
Hello='Hello sr' ; if [[ "$Hello" =~ .*Hello.* ]] ; then echo '"Hello" does has the word or sentence "Hello" inside' ; else echo '"Hello" doesn'"'"'t has the word or sentence "Hello" inside ' ; fi
我真的很喜欢这个页面,因为它的边栏里有备忘单,底部也解释了你的匹配模式。通过这一点,您可以更轻松地了解您的模式并找到bug。
如果[[$Hello=~.*Hello.*]
甚至如果[[$Hello=~Hello]]
问题是regexp不会搜索“字符串中的字符串”:它可以做到这一点,但实际上它会进行模式匹配,这更强大(也更复杂)。if[[“$Hello”=~.*Hello.]]
甚至是[[$Hello=~Hello]]]问题在于regexp不会搜索“字符串中的字符串”:它可以这样做,但实际上它会进行模式匹配,这更强大(也更复杂)。