더 큰 숫자의 경우 더 읽기 쉬운 형식으로 인쇄 할 수 있습니다. 아래 예제는 다른 예제와 동일하지만 "인간"형식으로도 인쇄합니다.
secs_to_human() {
if [[ -z ${1} || ${1} -lt 60 ]] ;then
min=0 ; secs="${1}"
else
time_mins=$(echo "scale=2; ${1}/60" | bc)
min=$(echo ${time_mins} | cut -d'.' -f1)
secs="0.$(echo ${time_mins} | cut -d'.' -f2)"
secs=$(echo ${secs}*60|bc|awk '{print int($1+0.5)}')
fi
echo "Time Elapsed : ${min} minutes and ${secs} seconds."
}
간단한 테스트 :
secs_to_human "300"
secs_to_human "305"
secs_to_human "59"
secs_to_human "60"
secs_to_human "660"
secs_to_human "3000"
산출:
Time Elapsed : 5 minutes and 0 seconds.
Time Elapsed : 5 minutes and 5 seconds.
Time Elapsed : 0 minutes and 59 seconds.
Time Elapsed : 1 minutes and 0 seconds.
Time Elapsed : 11 minutes and 0 seconds.
Time Elapsed : 50 minutes and 0 seconds.
다른 게시물에 설명 된대로 스크립트에서 사용하려면 (시작 지점을 캡처 한 다음 종료 시간과 함께 함수를 호출합니다.
start=$(date +%s)
# << performs some task here >>
secs_to_human "$(($(date +%s) - ${start}))"