NBash
56 строк · 1.4 Кб
1#!/bin/bash
2
3. L11-validint4
5validfloat()6{
7floatinput="$1"8
9# Проверка десятичной точки10if [ ! -z $(echo "$floatinput" | sed 's/[^.]//g') ]; then11
12# Извлечение целой части13decimal_part="$(echo "$floatinput" | cut -d. -f1)"14
15# Извлечение дробной части16fractional_part="${floatinput#*\.}"17
18# Проверка целой части числа19if [ ! -z "$decimal_part" ]; then20if ! validint "$decimal_part" "" ""; then21return 122fi23fi24
25# Проверка дробной части26# Проверка что в дробной части нет знака "-"27if [ "${fractional_part%${fractional_part#?}}" = "-" ]; then28echo "Неверно задано число, дробная часть не может содержать знак минус" >&229return 130fi31if [ "$fractional_part" != "" ]; then32if ! validint "$fractional_part" "" ""; then33return 134fi35fi36else37if [ "$floatinput" = "-" ]; then38echo "Неверно задано число" >&239return 140fi41
42# Проверка что оставшиеся цифры представляют допустимое число43if ! validint "$floatinput" "" ""; then44return 145fi46fi47
48return 049}
50
51# Для тестирования сценария
52if validfloat $1; then53echo "$1 допустимое вещественное число"54fi
55
56exit 0