我是unix新手,我正在尝试学习bash语言,当我进入“测试表达式”时,我发现了这个:
[[ "whatever" =~ h[aeiou] ]]
我已经阅读了答案这个问题,所以我明白运算符 =~ 的作用。运行上一条命令后,输出echo $?
is 0
,表示满足其中的条件[[ ]]
。如果我输入
[[ "whatever" =~ h[sdfghjkl] ]]
的输出为echo $?
,1
因此不满足条件。
所以,我想知道 和h[aeiou]
是什么h[sdfghjkl]
。表达式中是否有h
预定义函数[[ ]]
?如果是这样,它在做什么?如果不是,h[aeiou]
那么h{sdfghjkl]
实际上是什么?
谢谢。
答案1
就像另一篇文章中所说,=~
模式匹配,右侧操作数是正则表达式(regex)。
中的括号h[aeiou]
是正则表达式语法的一部分,那里没有命名函数。h[aeiou]
, 匹配 an h
,然后匹配 , 中的任何一个aeiou
, 因此whatever
匹配,因为它包含一个 ,h
后跟一个a
。
您将听到有关正则表达式的内容,因此可能值得研究一下它们:
(维基百科页面似乎也包含正式细节,不要太纠结于此。)