Простой таймер для измерения секунд, в течение которых операция завершилась

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

Я не специалист по написанию сценариев в bash, так что, если я делаю это совершенно неправильно, просто скажите об этом и в идеале предложите альтернативу, пожалуйста.

Вот сценарий:

#!/bin/bash

declare -i time_start

function get_timestamp {
        declare -i time_curr=`date -j -f "%a %b %d %T %Z %Y" "\`date\`" "+%s"`
        echo "get_timestamp:" $time_curr
        return $time_curr
}

function timer_start {
        get_timestamp
        time_start=$?
        echo "timer_start:" $time_start
}

function timer_stop {
        get_timestamp
        declare -i time_curr=$?
        echo "timer_stop:" $time_curr
        declare -i time_diff=$time_curr-$time_start

        return $time_diff
}

timer_start
sleep 3
timer_stop
echo $?

Код действительно должен быть достаточно понятным. команды echo предназначены только для отладки.
Я ожидаю, что результат будет примерно таким:

$ bash timer.sh
get_timestamp: 1285945972
timer_start: 1285945972
get_timestamp: 1285945975
timer_stop: 1285945975
3

К сожалению, это не тот случай. Я получаю следующее:

$ bash timer.sh
get_timestamp: 1285945972
timer_start: 116
get_timestamp: 1285945975
timer_stop: 119
3

Как видите, значение, которое local var time_curr получает от команды, является действительной меткой времени, но возвращение этого значения приводит к его изменению на целое число от 0 до 255. .

Может кто-нибудь объяснить мне, почему это происходит?

PS. Очевидно, это просто мой сценарий тестирования таймера без какой-либо другой логики.


ОБНОВЛЕНИЕ Для полной ясности, я хочу, чтобы это было частью сценария bash, очень похожего на этот , где я хочу измерять каждый цикл цикла.

Если, конечно, я не могу сделать это с помощью ] времени , предложите решение.

7
задан Michal M 1 October 2010 в 15:34
поделиться