【发布时间】:2013-08-09 08:07:03
【问题描述】:
我在以下代码中缺少一些东西。
hostnames = []
ip_addrs = []
hw_addrs = []
File.open("/etc/dhcp/dhcpd.conf", "r").each_line do |line|
unless line.match('#') # Make sure the line is not commented
if line.match("host-name")
hostname = line.scan(/"([^"]*)"/) # extract the Hostname
elsif line.match("fixed-address")
ip_addr = line.scan(/(\S*);/) # Extract IP addr
elsif line.match("ethernet")
hw_addr = line.scan(/(\S*);/) # Extract the HW address
end
end
hostnames + hostname.to_a if hostname # Protect against `nil' values
ip_addrs + ip_addr.to_a if ip_addr # Same
hw_addrs + hw_addr.to_a if hw_addr # Same
end
puts hostnames.inspect # Should be a list of hostnames...
这应该使用在dhcpd.conf 文件中找到的值填充数组。
如果我打印 File.open.each_line 块内的值,那么我会得到 STDOUT 的完整列表。当我尝试获取块之外的值时,我得到空数组。
我认为该块会生成我的变量的副本并对其进行处理,但它们不会从块中传回。我不确定内部是如何工作的,只是猜测。
【问题讨论】:
-
您没有将它添加到主机名数组中。尝试主机名
-
这是您的代码的精确副本吗?最后一个
end之前的三个语句没有意义。那些应该是任务?