比较puppet模板中的两个字符串变量
我试图编写一个if语句,比较puppet erb模板中的两个变量:比较puppet模板中的两个字符串变量,puppet,erb,Puppet,Erb,我试图编写一个if语句,比较puppet erb模板中的两个变量: <% @array_of_ip_addresses.each_with_index do |ip, idx| -%> <% if @ip == @ipaddress_eth0 -%> <%= "doing something with #{idx}" -%> <% end -%> <% end -%> 我不知道为什么,但我的if语句的条件一直返回f
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if @ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
我不知道为什么,但我的if语句的条件一直返回false(不用说我确认应该有匹配)
我遗漏了什么愚蠢的东西?
ip
是一个块范围变量,而不是从调用代码实例化的变量(在本例中,是Puppet的模板
函数),因此不应使用@
将其指定为类实例变量。当您删除它并将其指定为块范围变量ip
时,模板将如下所示:
<% @array_of_ip_addresses.each_with_index do |ip, idx| -%>
<% if ip == @ipaddress_eth0 -%>
<%= "doing something with #{idx}" -%>
<% end -%>
<% end -%>
使用类实例变量
@ip
可能会导致解析为nil
,这几乎总是错误的,因为nil!=@ipaddress_eth0
除非Facter无法解析您的eth0 ipaddress的值,这是非常罕见的(但仍然可能)。伙计,你太棒了!