Проверка правильности введенного пользователем времени в 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

Другие вопросы по тегам