Я написал сценарий, который обновляет версию в определенном файле. Мне нужно проверить, что вход для пользователя в формате версии, поэтому я не заканчиваю добавление числа, которое не нужно в этих важных файлах. То, как я это сделал, - это добавить новое значение version_check, где я удаляю шаблон regex, а затем проверку if.Как проверить строку ввода в bash в формате версии (n1.n2.n3)
version=$1
version_checked=$(echo $version | sed -e '/[0-9]\+\.[0-9]\+\.[0-9]/d')
if [[ -z $version_checked ]]; then
echo "$version is the right format"
else
echo "$version_checked is not in the right format, please use XX.XX.XX format (ie: 4.15.3)"
exit
fi
Это прекрасно работает для XX.XX и xx.xx.xx, но она также позволяет XX.XX.XX.XX и XX.XX.XX.XX.XX и т.д .. так что если пользователь делает ошибку он будет вводить неверные данные в файл. Как я могу заставить регулярное выражение sed ТОЛЬКО разрешать 3 пары чисел, разделенных точкой?
Sweet! это работает, спасибо огромное – Llanos
Добро пожаловать. Не забудьте принять ответ, чтобы закрыть это Q & A :) – anubhava