天天看點

《Puppet實戰手冊》——2.9 在if語句中使用正規表達式

本節書摘來自異步社群《puppet實戰手冊》一書中的第2章,第2.9節,作者:【英】john arundel著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

正規表達式是可以在if語句和其他條件語句中進行測試的另一種表達式。正規表達式是使用模式比對來比較字元串的一種強大的方式。

操作步驟

下面是在條件語句中使用正規表達式的一個例子。

将下面的代碼添加到清單檔案中:

工作原理

puppet将兩個/(正斜線)之間的字元串視為正規表達式,用于描述需要比對的文本。如果比對成功,則if表達式的值為真(true),就會執行第一組花括号之間的代碼。

如果希望在文本不比對的條件下執行某些代碼,使用!~代替=~。

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

更多參考

正規表達式非常強大,但是很難了解和調試。如果感覺正在用的正規表達式太複雜,不能一眼看明白它在做什麼,最好簡化設計,使其更加簡單化。但是,正規表達式捕獲模式是個非常有用的功能。

捕獲模式

正規表達式不僅可以比對文本,還可以捕獲到比對的文本,并将其儲存在一個變量中。

前面的代碼會生成以下輸出:

變量$0存儲整個比對的文本(假設全部比對成功)。如果使用括号括起了正規表達式中的任何部分,每一個比對到的結果都将被存儲在變量中。第一個比對到的為$1,第二個$2,依此類推,如前面的例子中所示。