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

str*_*gee 6 lua syntax-error awesome-wm

我正在努力改进我rc.luaAwesome窗口管理器.默认rc.lua设置菜单包含以下代码:

myawesomemenu = {
   { "manual", terminal .. " -e man awesome" },
   { "edit config", editor_cmd .. " " .. awesome.conffile },
   { "restart", awesome.restart },
   { "quit", awesome.quit }
}
Run Code Online (Sandbox Code Playgroud)

我使用Awesome作为GNOME桌面环境的窗口管理器,所以我想让Awesome使用该gnome-session-quit程序而不是awesome.quit,但只有当环境变量"DE"设置为"gnome"时.因此,我用第五行替换了

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

但是当我重新加载文件时,我会得到"附近的意外符号".我该如何解决这个问题,以及是什么原因造成的?

Yu *_*Hao 6

试试这个:

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

a and b or c就像C表达式一样a ? b : c,前提b是不是false.