gpt4 book ai didi

lua - redis lua 调试器——为什么我不能打印 ARGV

转载 作者:IT王子 更新时间:2023-10-29 06:01:31 25 4
gpt4 key购买 nike

我正在 Debug模式下尝试一个非常简单的 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> print ARGV[1]
No such variable.
lua debugger>

所以,它似乎不是lua表或数组。当我打印 ARGV 而不是 ARGV[1] 时,我得到以下输出

lua debugger> print ARGV
<value> {"user:root"}

那么,这是调试器的限制,还是我做错了?

最佳答案

你没有做错任何事。

使用 lua 调试器,您只能打印整个的值(ARGV 实际上是一个 lua table),并且您不能只打印 table 的一个项目。

当您在调试器中键入以下命令时:

打印变量名

Redis 搜索 lua 变量以查找是否有名为 varname 的变量。如果找到一个,Redis 会打印变量的值。但是,如果没有名为 varname 的人,它会打印No such variable

在您的例子中,print ARGV[1] 使 Redis 尝试查找一个变量,其名称完全ARGV[1],并且没有这样的变量,即 strcmp("ARGV[1]", "ARGV") != 0。所以你得到没有这样的变量

另一方面,通过print ARGV,Redis 可以找到一个(全局)变量,其名称正好是ARGV。所以它打印变量的值:table 中的所有元素。

关于lua - redis lua 调试器——为什么我不能打印 ARGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39316542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com