Преобразовать строку во время с помощью оболочки
У меня есть сценарий оболочки, который будет извлекать время (ч: м: с) из базы данных и сравнивать это время с текущим временем, чтобы выполнить действие в зависимости от результата сравнения.
Я получаю текущее время с помощью этой команды
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
уже.