我的if-then-else结束语句在Lua中失败;我怎样才能修好它?
我正在努力改进我的我的if-then-else结束语句在Lua中失败;我怎样才能修好它?,lua,syntax-error,awesome-wm,Lua,Syntax Error,Awesome Wm,我正在努力改进我的rc.lua,以满足未来的需求。默认的rc.lua设置一个包含以下代码的菜单: myawesomemenu = { { "manual", terminal .. " -e man awesome" }, { "edit config", editor_cmd .. " " .. awesome.conffile }, { "restart", awesome.restart }, { "quit", awesome.quit } } 我使用Aweso
rc.lua
,以满足未来的需求。默认的rc.lua
设置一个包含以下代码的菜单:
myawesomemenu = {
{ "manual", terminal .. " -e man awesome" },
{ "edit config", editor_cmd .. " " .. awesome.conffile },
{ "restart", awesome.restart },
{ "quit", awesome.quit }
}
我使用Awesome作为GNOME桌面环境的窗口管理器,因此我想让Awesome使用GNOME会话退出
程序,而不是Awesome.quit
,但前提是环境变量“DE”设置为“GNOME”。因此,我将第五行替换为
{ "quit", if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end }
但当我重新加载文件时,我会得到“if附近的意外符号”。我如何解决这个问题,以及是什么原因造成的?我很确定Lua不会那样工作:p 您是否尝试过将其包装到函数中
{
"quit",
function()
if os.getenv("DE") == "gnome" then
os.execute("/usr/bin/gnome-session-quit")
else
awesome.quit
end
end
}
你也可以尝试重写awesome。改用退出
_awesome_quit = awesome.quit
awesome.quit = function()
if os.getenv("DE") == "gnome" then
os.execute("/usr/bin/gnome-session-quit")
else
_awesome_quit()
end
end
试试这个:
{ "quit", (os.getenv("DE") == "gnome") and function() os.execute("/usr/bin/gnome-session-quit") end or awesome.quit}
a和b或c
类似于c表达式a?b:c
,前提是b
不是false
os.execute(“/usr/bin/gnome session quit”)
部分可能需要包装到函数中。否则,它将在正确的位置执行,而不是稍后执行。原因:在Lua中,if
语句不是表达式。