我有一个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?
答案 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