다른 쉘 스크립트의 출력 초를 hh:mm:ss 형식으로 변환하는 방법

다른 쉘 스크립트의 출력 초를 hh:mm:ss 형식으로 변환하는 방법

모든 사람

이건 내 스크립트야

/bin/wstalist | grep 'uptime'

이것은 반환 값입니다. 예 "uptime": 3456,, 출력이 있습니다 ,.

이 숫자는 초 단위입니다. hh:mm:ss 형식으로 변환하고 싶습니다. 그리고 매분마다 라우터(Busybox)에 의해 실행되므로 간단하기를 바랍니다.

그래서 문제는 내가 무엇을 해야할지 모른다는 것입니다.

누구든지 나를 도와줄 수 있나요? 제발.

답변1

line=$(/bin/wstalist | grep 'uptime')
sec=${line##* }
sec=${sec%%,}
h=$(( $sec / 3600 ))
m=$(( $(($sec - $h * 3600)) / 60 ))
s=$(($sec - $h * 3600 - $m * 60))
if [ $h -le 9 ];then h=0$h;fi
if [ $m -le 9 ];then m=0$m;fi
if [ $s -le 9 ];then s=0$s;fi
echo $h:$m:$s

답변2

#!/bin/bash

# Here's the output from your command
output='"uptime": 3456,'

# Trim off the interesting bit
seconds="$(echo "${output}" | awk '{ print $2 }' | sed -e 's/,.*//')"

readonly SECONDS_PER_HOUR=3600
readonly SECONDS_PER_MINUTE=60

hours=$((${seconds} / ${SECONDS_PER_HOUR}))
seconds=$((${seconds} % ${SECONDS_PER_HOUR}))
minutes=$((${seconds} / ${SECONDS_PER_MINUTE}))
seconds=$((${seconds} % ${SECONDS_PER_MINUTE}))

printf "%02d:%02d:%02d\n" ${hours} ${minutes} ${seconds}

관련 정보