比较人偶模板中的两个字符串变量
Comparing two string variables in puppet template
我正在尝试编写一个 if 语句来比较 puppet erb 模板中的两个变量:
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if @ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
我不明白为什么,但我的 if 语句的条件一直返回 false(不用说我确认应该匹配)。
我错过了什么蠢事?
ip
是块作用域变量,而不是从调用代码(在本例中为 Puppet 的 template
函数)实例化的变量,因此您不应将其指定为 class 带有 @
的实例变量。当您删除它并将其指定为块范围变量 ip
时,模板将如下所示:
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
使用 class 实例变量 @ip
可能会导致 nil
的解析,除非 Facter 无法解析,否则几乎总是错误的 nil != @ipaddress_eth0
你的 eth0 ipaddress 的值,这很少见(但仍然可能)。
我正在尝试编写一个 if 语句来比较 puppet erb 模板中的两个变量:
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if @ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
我不明白为什么,但我的 if 语句的条件一直返回 false(不用说我确认应该匹配)。
我错过了什么蠢事?
ip
是块作用域变量,而不是从调用代码(在本例中为 Puppet 的 template
函数)实例化的变量,因此您不应将其指定为 class 带有 @
的实例变量。当您删除它并将其指定为块范围变量 ip
时,模板将如下所示:
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
使用 class 实例变量 @ip
可能会导致 nil
的解析,除非 Facter 无法解析,否则几乎总是错误的 nil != @ipaddress_eth0
你的 eth0 ipaddress 的值,这很少见(但仍然可能)。