#bash #shell
#bash #оболочка
Вопрос:
У меня есть журнал, и в этом журнале у меня есть это время: 14:03:26,599 14:03:26,788 14:03:26,924 14:03:27,125
Как вычислить разницу между двумя этими временами в миллисекундах? Я попытался:
LOGTIME1=14:03:26,599
LOGTIME2=14:03:26,788
CONVERT1=$(date d $LOGTIME1 %s.%N)
CONVERT2=$(date d $LOGTIME1 %s.%N)
TOTAL=$(CONVERT2 - CONVERT1)
Но у меня это не получается.
Я получаю сообщение об ошибке: дата: дополнительный операнд ‘14:03:26,599’
Я верю, потому что «,» и 599…
Но я не знаю, как с этим справиться.
Комментарии:
1. Это
-d
неd
так . Кроме того, вы, вероятно, имели в видуTOTAL=$((...))
вместо$(...)
.2. тнк, я это исправлю
Ответ №1:
Вы можете использовать:
bc -l <<< "$(date -d "$LOGTIME2" ' %s.%N') - $(date -d "$LOGTIME1" ' %s.%N')"
.189000000
Обратите внимание, что вы должны использовать -d
in date
и использовать bc -l
для арифметики с плавающей запятой, а bash выполняет только целочисленную арифметику.