Используя rsyslog, можно ли иметь набор правил внутри действия, внутри набора правил?

Как уже говорили другие, caseне поддерживает операторы сравнения, только сопоставление с шаблоном.

Однако вы можете сделать набор операторов if/elif/fi более похожим на оператор case , отформатировав его по-другому. например, на основе ответа John1024:

if   [ "$cmils" -lt 320 ]; then cawg='??'
elif [ "$cmils" -le 403 ]; then cawg='25 AWG'
elif [ "$cmils" -le 509 ]; then cawg='24 AWG'
elif [ "$cmils" -le 641 ]; then cawg='23 AWG'
fi

или даже:

[ "$cmils" -ge 320 ] && [ "$cmills" -le 403 ] && cawg='25 AWG'
[ "$cmils" -ge 404 ] && [ "$cmills" -le 509 ] && cawg='24 AWG'
[ "$cmils" -ge 510 ] && [ "$cmills" -le 641 ] && cawg='23 AWG'

ПРИМЕЧАНИЕ.:в отличие от всего, что использует elif, этот вариант имеет тот недостаток, что выполняется по крайней мере первая проверка каждой из этих строк. Использование elifпропустит все оставшиеся тесты после того, как любой тест будет оценен как истинный. Вы можете поместить что-то подобное в функцию и добавить && returnпосле установки cawg.

Я лично нахожу любой из них гораздо более читабельным (без всех дополнительных переводов строки и чередующихся отступов, загромождающих вещи ), но мнения сильно различаются по этому конкретному -вопросу стиля кодирования/отступа:)

Когда все выстраивается в одни и те же (или очень близкие )столбцы, их также легче копировать, вставлять и редактировать. Что хорошо при использовании одного настоящего редактора.

0
09.12.2019, 16:06
1 ответ

Я думаю, вы ищете оператор «вызов»:https://www.rsyslog.com/doc/v8-stable/rainerscript/rainerscript_call.html

0
28.01.2020, 03:02

Теги

Похожие вопросы