Я использую 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