我正在尝试为LuCI(OpenWrt使用的Web界面)整合一个小扩展。然而,这个问题非常通用,与lua有关,而不是其他任何问题。
我有以下代码:
for k, v in ipairs(nixio.getifaddrs()) do
if v.family == "packet" then
s = s .. ifname .. "=" .. v.name .. '?'
if iface == v.name then
s = s .. "T\t"
match = 1
break
else
s = s .. "F\t"
end
end
end
每次我跑(ifname="lo"
但它失败了),s
字符串打印如下:
lo=lo?F lo=eth0?F lo=eth1?F lo=br-lan?F lo=wlan1?F lo=wlan0?F
我已经对它进行了一些调试,但我仍然不明白为什么在这种情况下字符串比较不起作用。我不是lua的专家,所以可能是我错过了一些明显的东西。谁能看到它是什么?
答案 0 :(得分:1)
s = s .. ifname .. "=" .. v.name .. '?'
if iface == v.name then
您在比较中使用的是iface
,而不是ifname
。如果变量之前没有给出值,则其值为nil
,但没有给出错误,因为它是合法的Lua。