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

我有一个 lua redis 脚本,我想将一些空参数传递给 ARGV。我想以下内容可以工作:

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

在这种情况下,我期望 ARGV[1] = ARGV[2] = nil。但是,它们似乎被设置为字符串 'nil',所以当我执行像这样的操作时:

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

我得到的是 'nil'

如何正确传递 nils 到 Lua?

点赞
用户1009479
用户1009479

不,即使你像这样传递参数:

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

命令行参数仍然是string类型的:

argv[1] = "test argument"
argv[2] = ""   --空字符串
argv[3] = "end"

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

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

if argv[1] ~= "nil" then return argv[1] end
2013-06-08 01:18:44