lua - 如何确定 sysdig 字段是否存在或如果不存在则处理错误
问题描述
我正在使用 Sysdig 来捕获一些事件,并有一个小凿子(LUA 脚本)来根据需要捕获和格式化事件。在 on_init() 我请求这样的字段:
f_field = chisel.request_field("<field>")
我的问题是如何在请求之前检查字段是否存在?我将使用仅在 0.24.1 上发布的新字段,但理想情况下,我希望我的凿子在没有此字段的情况下继续处理旧版本的 sysdig。我尝试将 chisel.request_field 的调用包装在 pcall() 中,如下所示:
ok, f_field = pcall(chisel.request_field("<field>"))
甚至实现我自己的“get_field”功能:
function get_field(field)
ok, f = pcall(chisel.request_field(field))
if ok then return f else return nil end
end
f_field = get_field("<field>")
if f_field ~= nil then
-- do something
end
但错误 ( "chisel requesting nonexistent field <field>"
) 仍然存在。
我看不到检查字段是否存在的方法,但我似乎也无法处理错误。如果可能的话,我真的不想要我的脚本的多个版本。
谢谢史蒂夫 H
解决方案
您快到了。您的问题在于您如何使用pcall
. Pcall 接受一个函数值和您希望调用该函数的任何参数。在您的示例中,您将 request_field 函数调用的结果传递给pcall
. 试试这个。。
ok, f = pcall(chisel.request_field, "field")
pcall
将在受保护模式下使用您的参数调用该chisel
方法并捕获任何后续错误。
推荐阅读
- javascript - 在上传图像时以黑白绘制图像(在画布中)
- javascript - Javascript 对象道具
- sql - 你如何通过查询创建一个子组?
- hex - 接收二进制彩信
- java - 使用 Java lambda 在 aws s3 上读取文件
- azure - AKS Kubernetes 与 Azure DevOps Pipeline - helm 升级错误
- wordpress - wordpress 税务查询和元查询一起
- android - 在 ConstraintLayout 中为 View 设置权重
- kubernetes - 有状态集不转移到新节点
- bash - 在bash中检测文件中的现有字符串