Назад | Перейти на главную страницу

Как использовать регулярное выражение для буквальных чисел

Я пишу сценарий для скручивания веб-страницы и grep / sed / sort / tail для числа, а затем использую коды выхода nagios для мониторинга. Мой сценарий bash выглядит следующим образом:

queue= curl -s 'site | grep -ohE 'READY":[0-9]+' |\
    sed 's/READY"://' | sort -n | tail -1

if [[ $queue =~ [0-1] ]]; then
    echo "OK - $queue current jobs."
    exit 0
fi

if [[ $queue =~ [2-3] ]]; then
    echo "WARNING - $queue current jobs in queue."
    exit 1
fi

if [[ $queue =~ [4-100] ]]; then
    echo "CRITICAL - $queue current jobs in queue."
    exit 2
fi

Проблема, с которой я сталкиваюсь, заключается в том, что он возвращает любое число, начинающееся с 3, например, в качестве предупреждения. 3, 30, 300 и т. Д. Вместо трех.

WARNING - 39 current jobs in queue.

Предупреждение должно быть только 2-3 задания, где критичным должно быть 4-100 заданий и нормально 0-1.

Как мне установить диапазон номеров, чтобы выходить только по одной цифре, а не по нескольким цифрам?

Не используйте регулярные выражения. Это числа, и их следует рассматривать как таковые.

if [ $queue -lt 2 ]; then 
    echo "OK - $queue current jobs."
    exit 0
fi

if [ $queue -lt 4 ]; then 
    echo "Warning - $queue current jobs."
    exit 1
fi

if [ $queue -ge  4 ]; then
    echo "CRITICAL"
    exit 2
fi

-lt = меньше; -ge = больше равно, увидеть больше Вот