【发布时间】:2017-05-13 16:19:39
【问题描述】:
我在一个文件中有一个 Lua 程序:
$ cat three.lua
for i = 1, 3 do print(i) end
Lua 5.3 运行良好:
$ lua three.lua
1
2
3
但是我不能在命令行上用-e运行它:
$ lua -e 'for i = 1, 3 do print(i) end'
lua5.3: (command line):1: <name> expected near <eof>
更简单的程序可以与-e 配合使用:
$ lua -e 'print("Hello");print("World")'
Hello
World
Lua 的脚本构建 -e 似乎不喜欢带有终止 end 的结构化 for 语句。我做错了什么?
【问题讨论】:
-
对于 Linux,它可以按照您的方式工作。对于 Windows,您需要双引号。
-
谢谢。我在 macOS 上并安装了 Lua 5.3。从自制。不幸的是,双引号也不起作用。该脚本用于 Lua 5.2。我可能有一个错误的安装,或者在 5.3 中发生了一些变化。
-
想通了。 Homebrew 已更改,因此
brew install lua不会安装 Lua 5.3!啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊所以你必须brew install lua5.3,它会生成一个名为lua5.3(不是lua!!!)的可执行文件。因为我觉得这很糟糕,所以我制作了自己的lua脚本来调用 lua5.3。但我做错了。我说lua5.3 $@而不是lua5.3 "$@"。所以这不是 Lua 的错,而是我的错。我仍然对 Lua 自制公式的维护者感到非常失望,但我相信他们有他们的理由,这比我自己的愿望更重要。
标签: lua