пожалуйста, напишите цель, которую вы хотите достичь. для измерения рабочего времени скрипта используйте timeкоманду (time ./script.sh), для распечатки текущего времени используйте dateкоманду и так далее.
Вы можете использовать встроенную timeкоманду Linux . Со страницы руководства:
КОМАНДА времени [аргументы]
время определяет, какую информацию отображать о ресурсах, используемых КОМАНДОЙ, из строки FORMAT. Если в командной строке не указан формат, но задана переменная среды TIME, в качестве формата используется ее значение.
Чтобы рассчитать время cleanup.shсценария, используйте:
Я понимаю, что это довольно старый вопрос, но именно так я делаю это для всего, когда хочу / должен знать, сколько времени понадобилось, чтобы бежать.
Bash имеет встроенный таймер секунд в виде внутренней переменной с именем SECONDS( другие внутренние переменные см. Здесь )
Положите SECONDS=0перед тем, что вы проверяете время выполнения. Это должно быть после любого пользовательского ввода, чтобы получить хороший результат, поэтому, если вы запрашиваете информацию, ставьте ее после приглашения.
Затем поместите это в конец того, что вы проверяете:
if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
Если вы хотите узнать только время в секундах, вы можете упростить приведенное выше:
echo "Completed in $SECONDS seconds"
В качестве примера:
read -rp "What's your name? ""name"
SECONDS=0
echo "Hello, $name"if(( $SECONDS >3600));then
let "hours=SECONDS/3600"
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $hours hour(s), $minutes minute(s) and $seconds second(s)"elif(( $SECONDS >60));then
let "minutes=(SECONDS%3600)/60"
let "seconds=(SECONDS%3600)%60"
echo "Completed in $minutes minute(s) and $seconds second(s)"else
echo "Completed in $SECONDS seconds"fi
time
команду (time ./script.sh), для распечатки текущего времени используйтеdate
команду и так далее.time yourprogram.sh
который объяснил @Marius CotofanaОтветы:
Если вы хотите продолжительность в секундах, в верхней части использования
и в конце
источник
Вы можете использовать встроенную
time
команду Linux . Со страницы руководства:Чтобы рассчитать время
cleanup.sh
сценария, используйте:источник
time
вы используете. hackernoon.com/…Я понимаю, что это довольно старый вопрос, но именно так я делаю это для всего, когда хочу / должен знать, сколько времени понадобилось, чтобы бежать.
Bash имеет встроенный таймер секунд в виде внутренней переменной с именем
SECONDS
( другие внутренние переменные см. Здесь )Положите
SECONDS=0
перед тем, что вы проверяете время выполнения. Это должно быть после любого пользовательского ввода, чтобы получить хороший результат, поэтому, если вы запрашиваете информацию, ставьте ее после приглашения.Затем поместите это в конец того, что вы проверяете:
Если вы хотите узнать только время в секундах, вы можете упростить приведенное выше:
В качестве примера:
источник
date +%T -d "1/1 + $SECONDS sec"
(ограничено менее чем 24источник
@anask делает умное решение для этого ответа, просто я рекомендую использовать нативный
$SECONDS
вместо того, чтобы создать новыйЦель
printf
деления и деления состоит в том, чтобы преобразовать прошедшие секунды в соответствующие единичные часы, минуты, секунды соответственно.источник