Одним из способов будет использование регулярного выражения и утверждение длины для удаления ложных срабатываний (опционально).Конечно, для нижеследующего потребуется оболочка bash
, поскольку ~
не соответствует POSIX
str="30.4"
re='^[[:digit:]]{2}\.[[:digit:]]$'
if [[ $str =~ $re ]]; then
echo 'true'
fi
В оболочке, совместимой с POSIX, хотя вы можете использовать оператор case
case $str in
[0-9][0-9].[0-9]) echo good ;;
*) echo bad;;
esac
Гораздо лучшим POSIX-совместимым инструментом будет использование expr
для сопоставления регулярных выражений.
if expr "$str" : '[[:digit:]]\{2\}\.[[:digit:]]$' > /dev/null; then
echo "true"
fi