Влияние обновлений yum на программное обеспечение пользователя или программного обеспечения

if [ "$1" -lt 1 ] || [ "$1" -gt 100 ]; then
    echo 'error (out of range)' >&2
    exit 1
fi

Это предполагает, что вещь в $1на самом деле является целым числом. Вы можете проверить это заранее с помощью

case "$1" in
    ("" | *[!0-9]*)
        echo 'error (not a positive decimal integer number)' >&2
        exit 1
esac

Это вызовет exit, если $1содержит что-либо, кроме десятичных цифр, или пусто.

Сочетание этих:

case "$1" in
    ("" | *[!0-9]*)
        echo 'error (not a positive decimal integer number)' >&2
        exit 1
        ;;
    *)
        if [ "$1" -lt 1 ] || [ "$1" -gt 100 ]; then
            echo 'error (out of range)' >&2
            exit 1
        fi
esac

Но делать одно за другим может выглядеть лучше:

case "$1" in
    ("" | *[!0-9]*)
        echo 'error (not a positive decimal integer number)' >&2
        exit 1
esac

if [ "$1" -lt 1 ] || [ "$1" -gt 100 ]; then
    echo 'error (out of range)' >&2
    exit 1
fi

Имейте в виду, что [арифметические операторы всегда рассматривают числа как десятичные, даже если они начинаются с 0, в то время как арифметические расширения оболочки в оболочках POSIX рассматривают числа, начинающиеся с 0, как восьмеричные (0100 равно 100 для [, но 64 для$((...))).

0
27.07.2020, 01:42
1 ответ

Я не уверен, как обрабатываются корпоративные пакеты в случае обновления, но для пакетов, которые, как вы уверены, не нужно обновлять, можно заблокировать номер версии, установленный с помощьюyum versionlockплагина после установки и в случае обновления они пропускаются.

1
18.03.2021, 23:17

Теги

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