2017-02-10 44 views
3

У меня есть сценарий Bash, который загружает файлы с веб-сайта через его API, и я хотел реализовать вещь (из-за отсутствия лучших слов) в конце, которая покажет, сколько времени потребовалось для завершения скрипта. С помощью этого кода, я был в состоянии сделать это:Как перевести секунды в минуты и секунды в Bash?

#!/bin/bash 
SECONDS=0 

# -- Code to Execute -- 

echo "Task complete" 
echo "Script completed in $(echo "scale=2; $SECONDS/60" | bc) minutes" 

Однако это будет отображать время сценарий затраченное на выполнение в долях минуты:

Task complete 
Script completed in 1.35 minutes 

Как бы я смог перевести количество секунд, которое скрипт взял, чтобы заполнить минуты и секунды? Как это:

Task complete 
Script completed in 1 minute and 12 seconds 
+0

Я бы хотел, чтобы он просто отображал числовое значение для того, сколько времени потребовалось, чтобы сценарий завершился за считанные минуты и секунды, например, codeforester's ответ осуществлен. (Например, переведите 72 секунды до 1 минуты и 12 секунд) – jramos775

ответ

3

Bash хорош в простом целочисленном математике:

total_time=100 
minutes=$((total_time/60)) 
seconds=$((total_time % 60)) 
echo "Script completed in $minutes minutes and $seconds seconds" 
# output -> Script completed in 1 minutes and 40 seconds 
5

Вы можете использовать целочисленное деление и операторы по модулю в оболочке:

echo "Script completed in $((SECONDS/60)) minutes and $((SECONDS%60)) seconds" 

Если вы хотите оставить в секундах и минутах, если они равны нулю, это немного сложнее:

if ((SECONDS/60 == 0)); then 
      echo "Script completed in $SECONDS seconds" 
elif ((SECONDS%60 == 0)); then 
    echo "Script completed in $((SECONDS/60)) minutes" 
else 
    echo "Script completed in $((SECONDS/60)) minutes and $((SECONDS%60)) seconds" 
fi 

(Он все равно скажет такие вещи, как «1 минута», а не «1 минута»; вы также можете исправить это, если хотите сделать это еще более сложным ...)

+0

Ваш ответ тоже сработал бы, но поскольку это немного из-за того, что мне это нужно, я пошел вперед и принял ответ Codeforester. Спасибо за ваш ответ, хотя! – jramos775