NBash

Форк
0
/
L12-validfloat 
56 строк · 1.4 Кб
1
#!/bin/bash
2

3
. L11-validint
4

5
validfloat()
6
{
7
	floatinput="$1"
8

9
	# Проверка десятичной точки
10
	if [ ! -z $(echo "$floatinput" | sed 's/[^.]//g') ]; then
11

12
		# Извлечение целой части
13
		decimal_part="$(echo "$floatinput" | cut -d. -f1)"
14

15
		# Извлечение дробной части
16
		fractional_part="${floatinput#*\.}"
17

18
		# Проверка целой части числа
19
		if [ ! -z "$decimal_part" ]; then
20
			if ! validint "$decimal_part" "" ""; then
21
				return 1
22
			fi
23
		fi
24

25
		# Проверка дробной части
26
		# Проверка что в дробной части нет знака "-"
27
		if [ "${fractional_part%${fractional_part#?}}" = "-" ]; then
28
			echo "Неверно задано число, дробная часть не может содержать знак минус" >&2
29
			return 1
30
		fi
31
		if [ "$fractional_part" != "" ]; then
32
			if ! validint "$fractional_part" "" ""; then
33
				return 1
34
			fi
35
		fi
36
	else
37
		if [ "$floatinput" = "-" ]; then
38
			echo "Неверно задано число" >&2
39
			return 1
40
		fi
41

42
		# Проверка что оставшиеся цифры представляют допустимое число
43
		if ! validint "$floatinput" "" ""; then
44
			return 1
45
		fi
46
	fi
47

48
	return 0
49
}
50

51
# Для тестирования сценария
52
if validfloat $1; then
53
	echo "$1 допустимое вещественное число"
54
fi
55

56
exit 0

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.