Проверка правильности введенного пользователем времени в bash с использованием регулярных выражений
Предположим, пользователь кормил время:
read -p "Enter the start time you want to start(hh:mm:ss) " user_start_time
и регулярное выражение:
timePattern="[0-2][0-3]:[0-5][0-9]:[0-5][0-9]"
если я сделаю:
if [ "$user_start_time" == "$timePattern" ]
#or if [ "$user_start_time" =~ "$timePattern" ]
then
echo "in if"
else
echo "in else"
fi
Это не подтверждает..... будучи новичком, я понимаю сравнение int
или же string
но как мы идем time
(дата тоже есть, но date -d
решает массу проблем)
Этот вопрос тоже есть, но я не понял принятого ответа!!
1 ответ
Решение
Для сопоставления регулярных выражений вам нужно использовать =~
оператор вместо ==
в BASH. Так что используйте это так:
[[ "$user_start_time" =~ $timePattern ]] && echo "in if" || echo "in else"
Также вам нужно удалить кавычки вокруг регулярных выражений $timePattern