Написать bash-скрипт для проверки введенной даты на соответствие шаблону YYYY/MM/DD HH:MM. Чтобы упростить задачу, предположим, что в каждом месяце 30 дней. Если дата подошла, вывести «YES», иначе – «NO». Kali Linux
bash
#!/bin/bash
# Ввод даты
read -p "Введите дату в формате YYYY/MM/DD HH:MM: " input_date
# Проверка на соответствие формату
if [[ $input_date =~ ^[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}$ ]]; then
# Разделение даты на компоненты
year=$(echo $input_date | cut -d '/' -f 1)
month=$(echo $input_date | cut -d '/' -f 2)
day=$(echo $input_date | cut -d '/' -f 3 | cut -d ' ' -f 1)
hour=$(echo $input_date | cut -d ' ' -f 2 | cut -d ':' -f 1)
minute=$(echo $input_date | cut -d ':' -f 2)
# Проверка на корректность даты
if [[ $month -le 12 && $day -le 30 && $hour -le 23 && $minute -le 59 ]]; then
echo "YES"
else
echo "NO"
fi
else
echo "NO"
fi
Разберем этот скрипт подробно:
1. Сначала с помощью команды `read` запрашиваем у пользователя ввод даты в требуемом формате.
2. Затем проверяем введенную строку на соответствие заданному шаблону с помощью оператора `=~` и регулярного выражения `^[0-9]{4}/[0-9]{2}/[0-9]{2} [0-9]{2}:[0-9]{2}$`. Это регулярное выражение описывает формат даты YYYY/MM/DD HH:MM.
3. Если введенная строка соответствует шаблону, то дата разделяется на компоненты (год, месяц, день, час, минуты) с помощью команды `cut`.
4. После этого происходит проверка на корректность даты: месяц не больше 12, день не больше 30, час не больше 23, и минуты не больше 59.
5. В случае соответствия условиям выводится "YES", иначе - "NO".
Таким образом, данный скрипт позволяет пользователю проверить введенную дату на соответствие формату YYYY/MM/DD HH:MM и корректность значений компонентов даты и времени.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет