尝试使用Lua模块在命令行上失败

时间:2013-08-01 14:28:09

标签: lua

我正在尝试学习如何使用Lua模块。我一直在阅读以下手册:

http://lua-users.org/wiki/ModulesTutorial

不幸的是,我甚至无法让第一个例子正常工作!我做了以下事情:

创建了一个“mymodule.lua”文件,如下所示:

local mymodule = {}

function mymodule.foo()
    print("Hello World!")
end

return mymodule

然后从命令行,在mymodule.lua文件所在的文件夹中,我尝试执行以下操作:

mymodule = require "mymodule"

但是我收到以下错误消息:

myserver:/usr/share/x/research/# mymodule = require "mymodule"
-ash: mymodule: not found

这有效:

myserver:/usr/share/x/research/# local mymodule = require "mymodule"

但是当我尝试运行foo()方法时,它会失败:

myserver:/usr/share/x/research/# mymodule.foo()
-ash: syntax error: bad function name
myserver:/usr/share/x/research/#

我想这是有道理的,因为我在命令行上将mymodule声明为local而不是global。

我想我的问题是为什么我不能在命令行上全局声明模块 手册说我应该从“交互式翻译”运行这个。我在linux中使用标准的命令行/终端窗口......这可能是问题吗?我通常必须在所有lua命令前添加“lua”。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

lua不是你的外壳。您需要从lua interpeter内部运行该代码,而不是在shell提示符下运行。

myserver:/usr/share/x/research/# lua
Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio
> mymodule = require "mymodule"
> mymodule.foo()