在Redis上将Nil参数传递给Lua脚本?

时间:2013-06-07 23:27:21

标签: lua redis

我有一个lua redis脚本,我想在ARGV中传递一些nil参数。我认为以下内容可行:

redis-cli EVAL "$(cat some_script.lua)" 3 key1 key2 key 3 nil nil 4

在那种情况下,我希望ARGV [1] = ARGV [2] = nil。相反,它们似乎在lua中设置为'nil'(字符串),所以当我执行类似的操作时:

if ARGV[1] then return ARGV[1] end

我得到了'nil'给我的回复。

如何正确地将nils传递给Lua?

1 个答案:

答案 0 :(得分:4)

不,命令行参数将始终为string,即使您传递这样的参数:

lua script.lua "test argument" "" "end"

你仍然会得到

argv[1] = "test argument"
argv[2] = ""   --empty string
argv[3] = "end"

在这种情况下,argv [4] = nil,但我不认为这是你想要的,因为程序最终会期望一个非零参数。

那么为什么不在脚本中设置一些标志字符串代表nil,例如,使用字符串“nil”作为标志,这样你就可以在脚本中测试:

if argv[1] ~= "nil" then return argv[1] end