Насколько я знаю, переменные bash не имеют определенного типа.
Моя проблема в том, что мне нужно преобразовать метку времени (всегда в формате: hh:mm:ss
) в одно целое число, представляющее секунды.
Итак, я разрезал части hh
, mm
и ss
на отдельные строки и использую expr
для вычисления целого числа секунд, например:
TIME=expr $HH \* 3600 + $MM \* 60 + $SS
Но когда, например, $HH=00
тогда expr не будет работать. Можно ли преобразовать строки типа 00
или 01
в целые числа?
Попробуйте awk
. Например:
echo "00:20:40" | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }'
Итак, если у вас есть:
time="00:20:40"
, то:
seconds=$(echo $time | awk -F: '{ print ($1 * 3600) + ($2 * 60) + $3 }')
и echo $seconds
напечатает 1240
.
Если вы хотите преобразовать текущее время в секунду , попробуйте этот скрипт
#!/bin/bash
let var=$(date +%H)*3600+$(date +%M)*60+$(date +%S)
echo $var
. Он преобразует текущее время в секунды (целое число).
Если вы хотите преобразовать произвольную временную строку , например, HH:MM:SS
, во вторую, то лучше использовать ответ Раду Радеану . Я мог бы дать что-то, как вы пытались,
Я предполагаю, что вы сохранили часы, минуты и секунды в HH
, MM
и SS
, а затем использовать следующее для сохранения времени в секундах. в var
,
let var=HH*3600+MM*60+SS
bind '"\C-M":"\n"' #
для сбрасывания этого. Запаздывающий хеш в команде делает дополнительный текст комментарием, таким образом запрещающим его эффект, как я записал в ответе. – Nykakin 16 July 2015 в 10:16