redis lua调试器——为什么可以';我不能打印ARGV吗
我正在调试模式下尝试一个非常简单的lua脚本,并检查ARGVredis lua调试器——为什么可以';我不能打印ARGV吗,lua,redis,Lua,Redis,我正在调试模式下尝试一个非常简单的lua脚本,并检查ARGV local jobExists = redis.call('exists', ARGV[1]) if jobExists then return false end 然后,我运行调试器,如下所示: redis-cli --ldb --eval ./is_running.lua 0 , user:root 我能够在程序中访问ARGV[1]的值,并且工作正常。但当我尝试打印时,它会说“没有这样的变量” lua debugger&
local jobExists = redis.call('exists', ARGV[1])
if jobExists then
return false
end
然后,我运行调试器,如下所示:
redis-cli --ldb --eval ./is_running.lua 0 , user:root
我能够在程序中访问ARGV[1]的值,并且工作正常。但当我尝试打印时,它会说“没有这样的变量”
lua debugger> print ARGV[1]
No such variable.
lua debugger>
因此,它似乎不是lua表或数组。当我打印ARGV而不是ARGV[1]时,我得到以下输出
lua debugger> print ARGV
<value> {"user:root"}
lua调试器>打印ARGV
{“用户:根”}
那么,这是调试器的限制,还是我做错了?您没有做错任何事情。 使用lua调试程序,您只能打印整个
表的值(ARGV
实际上是一个lua表
),并且您不能只打印表
的一项
在调试程序中键入以下命令时:
print varname
Redis搜索lua变量以查找是否有名为varname
的变量。如果找到一个,Redis将打印变量的值。但是,如果没有名为varname
的变量,则不会打印此类变量
在您的情况下,print ARGV[1]
使Redis尝试查找一个变量,其名称正好是ARGV[1],并且没有这样的变量,即strcmp(“ARGV[1]”,ARGV”)!=0
。所以没有这样的变量
另一方面,通过print ARGV
,Redis可以找到一个(全局)变量,它的名称正是ARGV。因此它打印变量的值:表中的所有元素