最近,我试图找到一种更好的语法来检查一个字符串是否符合几种可能性。这让我尝试
if [[ "hello" =~ "hi"|"hey"|"hello" ]]; then ...
因为它是一个正则表达式,所以如果第一个字符串是这样的,它就会触发"NOThello"
。但是,下面的代码只会精确匹配字符串,拒绝"NOThello"
if [[ "hello" =~ ^("hi"|"hey"|"hello")$ ]]; then ...
它是什么^()$
?它有什么用?它是 的一个功能[[
,还是 shell 的一个功能?
我在手册页中找不到任何关于它的信息,其他 资源,我唯一的参考是这. 的手册页test
也没有任何关于此的信息。
Bash 版本是4.4.20
答案1
正则表达式解释:
^ # beginning of string
( # start capture group
"hi" # literally "hi"
| # OR
"hey" # literally "hey"
| # OR
"hello" # literally "hello"
) # end of group
$ # end of string
您将在这里找到有用的信息: