Логические выражения |
Логические выражения – это операции сравнения и вызова функций, объединенные логическими операторами && ("логическое И", "AND"), || ("логическое ИЛИ", "OR"), ! ("логическое отрицание", "NOT"). Для группировки операций и изменения их приоритета могут использоваться скобки.
Синтаксис логических выражений BOOL_EXPR: func_name() | COMPARE | Где func_name() – вызов функции с именем func_name, а COMPARE – одна из перечисленных ниже операций сравнения. Функция должна быть определена заранее в секции [def]. Используемые обозначения при определении операций сравнения COMPARE:
Поддерживаемые операции сравнения для переменных типа string:
Операции == и ~ для строк регистронезависимы. Поддерживаемые операции сравнения для переменных типа cidr:
Если для операции <<= оба аргумента имеют значение undefined, то результатом операции считается true. Если же только один из аргументов имеет значение undefined, то результат этой операции – false. Поддерживаемые операции сравнения для переменных типа time:
Каждая операция сравнения имеет определенный приоритет относительно других операций. В порядке убывания приоритета операции сравнения распределяются следующим образом: 1.! ("логическое НЕ", "NOT") 2.< ("меньше"), <= ("меньше или равно"), > ("больше"), >= ("больше или равно") 3.== ("совпадает), != (не "совпадает"), ~ ("соответствует"), <<= ("входит в группу") 4.&& ("логическое И", "AND") 5.|| ("логическое ИЛИ", "OR") Операции, перечисленные в одной строке, имеют одинаковый приоритет и вычисляются слева направо. Для некоторых операций возможно чтение массива значений из файла (с указанием префикса file:). Строки, начинающиеся с символов "#" или ";", а также пустые строки – пропускаются при чтении значений. Содержимое файла file:FILE_NAME читается при обработке конфигурационного файла, соответственно, при изменении содержимого файла со значениями или пути к нему необходимо заставить drweb-icapd перечитать конфигурацию, например, послав ему сигнал SIGHUP. |