Como converter segundos para o formato hh: mm: ss a partir da saída de outro script de shell

0

todos

aqui está o meu script

/bin/wstalist | grep 'uptime'

Qual é o valor de retorno como "uptime": 3456, yes, há um , vindo com a saída.

Esse número é de segundos. Eu quero convertê-lo para o formato hh: mm: ss. e quer que seja simples, porque será executado por um roteador (busybox) em cada minuto.

Então o problema é que eu não sei como.

Alguém pode me ajudar? por favor.

    
por Vermillion 15.11.2016 / 15:08

2 respostas

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
    
por 15.11.2016 / 15:28
1
#!/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}
    
por 15.11.2016 / 15:31