Я запускаю свой собственный скрипт для сброса баз данных в файлы каждую ночь .
Я хотел подсчитать время (в секундах), которое требуется для сброса каждой базы данных, поэтому я пытался написать несколько функций, которые помогли бы мне достичь этого, но у меня возникли проблемы.
Я не специалист по написанию сценариев в 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, очень похожего на этот , где я хочу измерять каждый цикл цикла.
Если, конечно, я не могу сделать это с помощью ] времени
, предложите решение.