Как проверить строку ввода в bash в формате версии (n1.n2.n3)

Я написал сценарий, который обновляет версию в определенном файле. Мне нужно проверить, что ввод для пользователя находится в формате версии, поэтому я не заканчиваю добавлять числа, которые не нужны в этих важных файлах. Я сделал это, добавив новое значение version_check, в котором я удаляю свой шаблон регулярного выражения, а затем проверяю if.

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 пары чисел, разделенных точкой?

5
задан Llanos 13 February 2012 в 16:00
поделиться