22

puppet テンプレートで変数が undef かどうかを確認する適切な方法は何ですか?

マニフェストでは、変数は次のように定義されています

$myvar = undef

これはテンプレートでどのようにチェックされますか?

次の 2 つのバリアントが見られます

<% if @myvar -%>
<% end -%>

<% if not @myvar.nil? and @myvar -%>
<% end -%>

どちらも私の場合はうまくいくようですが、最初のアプローチが特定のケースで失敗するのでしょうか?

4

3 に答える 3

9

Puppet のドキュメント (この回答を書いている時点) は、それを非常によく説明しています: https://puppet.com/docs/puppet/latest/lang_template_erb.html#concept-5365

undefは と同じではないため、false単に an を使用しifて確認するのは適切な方法ではありません。また、変数が定義されているが、値がfalseorのnil場合も、単純な ではチェックできませんif

これが、 or (or )scope.lookupvar(‘variable’)の戻り値を使用してチェックし、に設定されているかどうか、またはまったく設定されていないかどうかを確認する理由です。:undef:undefinednilundef

于 2014-07-13T16:08:11.617 に答える