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

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

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

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);

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

date: неверная дата '190000'

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

-1
задан 24 April 2019 в 17:48

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)
0
ответ дан 24 April 2019 в 17:48

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

0
ответ дан 24 April 2019 в 17:48

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

Похожие вопросы: