2014-01-22 203 views
6

我下面这个简单的教程尝试一个简单的Lua中错误而执行LUA脚本的Redis服务器

http://www.redisgreen.net/blog/2013/03/18/intro-to-lua-for-redis-programmers/

我创建了这几行简单的hello.lua文件

local msg = "Hello, world!" 
return msg 

我试着运行简单命令

EVAL "$(cat /Users/rsingh/Downloads/hello.lua)" 0 

A第二我收到此错误

(error) ERR Error compiling script (new function): user_script:1: unexpected symbol near '$' 

我找不到什么是错在这里,我一直没能找到谁遇到这一点。

任何帮助将深表谢意。

回答

8

你的问题来自于一个事实,你是从互动 Redis的会话执行这个命令:

$ redis-cli 
127.0.0.1:6379> EVAL "$(cat /path/to/hello.lua)" 0 
(error) ERR Error compiling script (new function): user_script:1: unexpected symbol near '$' 

在这样一个会议,你不能使用普通的命令行工具,如cat等。 (这里使用cat作为一种方便的方式来获取脚本内容)。换句话说:您将"$(cat /path/to/hello.lua)"作为纯字符串发送给Redis,这不是Lua代码(当然),并且Redis抱怨。

要执行此示例,你必须留在壳:

$ redis-cli EVAL "$(cat /path/to/hello.lua)" 0 
"Hello, world!" 
+0

非常感谢。这解决了它。 –

0

在起飞的机会,任何人是来这从Windows相反,我发现我已经做了很多杂耍来达到同样的效果。我不得不这样做:

echo “local msg = 'Hello, world!'; return msg” > hello.lua 
for /F "delims=" %i in ('type hello.lua') do @set cmd=%i 
redis-cli eval "%cmd%" 0 

..如果你想让它保存为一个文件,但你必须有一个行中的所有内容。如果你不只是滚动内容为一组命令

set cmd=“local msg = 'Hello, world!'; return msg” 
redis-cli eval "%cmd%" 0 
2

如果您是从窗户进来,并尝试运行Lua中,你应该使用这种格式:从

redis-cli --eval script.lua 

运行此您的脚本所在的文件夹,它将加载多行文件并执行它。