天天看点

《Puppet实战手册》——2.9 在if语句中使用正则表达式

本节书摘来自异步社区《puppet实战手册》一书中的第2章,第2.9节,作者:【英】john arundel著,更多章节内容可以访问云栖社区“异步社区”公众号查看

正则表达式是可以在if语句和其他条件语句中进行测试的另一种表达式。正则表达式是使用模式匹配来比较字符串的一种强大的方式。

操作步骤

下面是在条件语句中使用正则表达式的一个例子。

将下面的代码添加到清单文件中:

工作原理

puppet将两个/(正斜线)之间的字符串视为正则表达式,用于描述需要匹配的文本。如果匹配成功,则if表达式的值为真(true),就会执行第一组花括号之间的代码。

如果希望在文本不匹配的条件下执行某些代码,使用!~代替=~。

<code>if $::lsbdistdescription !~ /lts/ {</code>

更多参考

正则表达式非常强大,但是很难理解和调试。如果感觉正在用的正则表达式太复杂,不能一眼看明白它在做什么,最好简化设计,使其更加简单化。但是,正则表达式捕获模式是个非常有用的功能。

捕获模式

正则表达式不仅可以匹配文本,还可以捕获到匹配的文本,并将其保存在一个变量中。

前面的代码会生成以下输出:

变量$0存储整个匹配的文本(假设全部匹配成功)。如果使用括号括起了正则表达式中的任何部分,每一个匹配到的结果都将被存储在变量中。第一个匹配到的为$1,第二个$2,依此类推,如前面的例子中所示。