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