Что такое OID,MIB? Проверить сумму перевода чеком _snmp

Предполагая, что вы получаете продолжительность в простых секундах или в виде положительных целых чисел с суффиксами h, mи/или s, следующее вычисляет продолжительность в секундах (, но не проверяет, что предоставленные аргументы, без суффикса, на самом деле являются положительными целыми числами, и не очень тщательно следит за тем, чтобы суффиксы были указаны правильно):

to_seconds () {
    seconds=0

    for ts do
        case $ts in
            *h) seconds=$(( seconds + 60*60*"${ts%h}" )) ;;
            *m) seconds=$(( seconds +    60*"${ts%m}" )) ;;
             *) seconds=$(( seconds +       "${ts%s}" )) ;;
        esac
    done

    printf '%s\n' "$seconds"
}

Цикл в функции будет перебирать заданные аргументы.

Подстановка параметра ${ts%h}удалит замыкающий hс конца значения $ts, если он там есть.

Если использовать 5m 5m 5mв качестве аргумента, будет вычислено количество секунд для 15 минут.

Вы должны иметь возможность использовать это в своем коде,возможно, не в такой точной форме (как отдельная функция ), а как часть кода, который вы сейчас пишете.

Тестирование:

$ to_seconds 5h 22m 44s
19364
$ to_seconds 5h 22m 44
19364
$ to_seconds 44
44
$ to_seconds 10
10
$ to_seconds 10m
600
$ to_seconds 10h
36000
$ to_seconds 2i
bash: seconds +       2i: value too great for base (error token is "2i")

Чтобы убедиться, что данное число является целым числом, см.

0
04.06.2020, 07:02
0 ответов

Теги

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