Bash - h[aeiou] 在 [[ =~ ]] 表达式中做什么?

Bash - h[aeiou] 在 [[ =~ ]] 表达式中做什么?

我是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

您将听到有关正则表达式的内容,因此可能值得研究一下它们:

(维基百科页面似乎也包含正式细节,不要太纠结于此。)

相关内容