我的if-then-else-end声明在Lua失败了;我该怎么解决?

时间:2013-07-13 04:03:12

标签: lua syntax-error awesome-wm

我正在努力改善Awesome window managerrc.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-session-quit程序而不是awesome.quit,但前提是环境变量“DE”设置为“侏儒”。因此,我用

替换了第五行
{ "quit", if os.getenv("DE") == "gnome" then os.execute("/usr/bin/gnome-session-quit") else awesome.quit end }

但是当我重新加载文件时,我会得到“意外的符号”。我该如何解决这个问题,以及导致它的原因?

2 个答案:

答案 0 :(得分:6)

试试这个:

{ "quit", (os.getenv("DE") == "gnome") and function() os.execute("/usr/bin/gnome-session-quit") end or awesome.quit}

a and b or c与C a ? b : c类似,前提是b不是false

答案 1 :(得分:4)

我很确定Lua不会那样工作:P

您是否尝试将其包装在函数中?

{
    "quit", 
    function()
        if os.getenv("DE") == "gnome" then
            os.execute("/usr/bin/gnome-session-quit")
        else
            awesome.quit
        end
    end
}

您还可以尝试重写awesome.quit吗?

_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