Преобразовать строку во время с помощью оболочки

У меня есть сценарий оболочки, который будет извлекать время (ч: м: с) из базы данных и сравнивать это время с текущим временем, чтобы выполнить действие в зависимости от результата сравнения.

Я получаю текущее время с помощью этой команды

currenttime=$(date +%H%M%S);

время, которое я получил из базы данных, это peak_time с этим форматом H:M:s, поэтому я удалил: с того времени, используя этот код

 peak_time=`$peak_time' | sed s/://g `

и теперь мне нужно преобразовать последний результат во время, используя эту команду

 peak_time=$(date -d "$peak_time" +%H%M%S);

но я получаю эту ошибку

дата: недействительная дата '190000'

поэтому, пожалуйста, скажите мне, как я могу решить эту проблему

2 ответа

Ваша команда не верна.

Сначала вы пытаетесь "выполнить" присвоение переменной здесь:

peak_time=`$peak_time' | sed s/://g ` 

Чтобы правильно запустить эту команду, вы должны написать:

peak_time=$(echo $peak_time | sed 's/://g')

Но, как говорили некоторые люди в комментариях, вам не нужно больше шагов, кроме последнего:

peak_time=$(date -d "$peak_time" +%H%M%S)

Я не совсем уверен, что вы пытаетесь сделать, но удаляю этот шаг из вашего потока: peak_time=$peak_time' | sed s/://gСледующий шаг сработает, поскольку вы эффективно конвертируете строку времени в 190000 с 19:00:00, используя date уже.

Другие вопросы по тегам