Что состоит в том, чтобы преобразовать простой способ 00:20:40.28
(HH:MM:SS) к секундам со сценарием Bash?
Доли секунды могут быть отключены, это не важно.
Попробуйте awk
. Как бонус, вы можете сохранить секунды разделения.
echo "00:20:40.25" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
Я не проверил это, но я думаю, что это то, как вы разделили строку. Сопровождается умножением на соответствующие суммы в течение нескольких часов и минут.
mytime=’00:20:40.28′
part1=${mytime%%:*}; rest=${mytime#*:}
part2=${rest%%:*}; rest=${rest#*:}
part3=${rest%%:*};
Попробуйте следующее:
T='00:20:40.28'
SavedIFS="$IFS"
IFS=":."
Time=($T)
Seconds=$((${Time[0]}*3600 + ${Time[1]}*60 + ${Time[2]})).${Time[3]}
IFS="$SavedIFS"
echo $Seconds
($ IFS
).
$ {
$ (( <арифметическое выражение> )) выполняет арифметическое выражение.
Надеюсь, это поможет.
с оболочкой,
#!/bin/bash
d="00:20:40.28"
IFS=":"
set -- $d
hr=$(($1*3600))
min=$(($2*60))
sec=${3%.*}
echo "total secs: $((hr+min+sec))"