Проверьте дату и время, введенные пользователем в UNIX
У меня есть скрипт оболочки, который использует параметры даты и времени, введенные пользователем. Дата как ММ / ДД/гггг и время как чч: мм. Что было бы самым простым способом проверить, что пользователь ввел правильную дату [ например, месяц должен быть меньше 12.... для времени мм должно быть меньше 60... Есть ли у нас встроенные функции в UNIX для проверки метки времени?
3 ответа:
Вы можете использовать инструмент unix date, чтобы проанализировать и проверить его для вас, а также проверить код возврата, например
Допустимая дата, код возврата 0:
joel@bohr:~$ date -d "12/12/2000 13:00" Tue Dec 12 13:00:00 GMT 2000 joel@bohr:~$ echo $? 0
Недопустимая дата, код возврата 1:
joel@bohr:~$ date -d "13/12/2000 13:00" date: invalid date `13/12/2000 13:00' joel@bohr:~$ echo $? 1
Вы можете изменить формат ввода, принятый date , используя опцию +FORMAT (man date )
Собирая все это вместе в виде небольшого сценария:
usrdate=$1 date -d "$usrdate" > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Date $usrdate was valid" else echo "Date $usrdate was invalid" fi
Вы можете использовать
grep
, чтобы проверить, что входные данные соответствуют правильному формату:if ! echo "$INPUT" | grep -q 'PATTERN'; then # handle input error fi
ГдеPATTERN - регулярное выражение, которое соответствует всем допустимым входам и только допустимым входам. Я оставляю построение этой модели вам ;-).