如何将另一个 shell 脚本的输出秒转换为 hh:mm:ss 格式

如何将另一个 shell 脚本的输出秒转换为 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}

相关内容