Https://pastebin.com/U4t6GANZ - sourced script
#!/bin/bash
. validint
validfloat()
{
fvalue="$1"
if [ ! -z $(echo $fvalue | sed 's/[^.]//g') ] ; then
decimalPart="$(echo $fvalue | cut -d. -f1)"
fractionalPart="${fvalue#*\.}"
if [ ! -z $decimalPart ] ; then
#Зачем тут "" "" ???Скрипт может не принимать эти аргументы для min max
if! validint "$decimalPart" "" "" ; then
return 1
fi
fi
if [ "${fractionalPart%${fractionalPart#?}}" = "-" ] ; then
echo "Invalid floating-point number: '-' not allowed \
after decimal point" >&2 # >&2 sends output to stderr.
return 1
fi
if [ "$fractionalPart" != "" ] ; then
if! validint "$fractionalPart" "0" "" ; then
return 1
fi
fi
else
if [ "$fvalue" = "-" ] ; then
echo "Invalid floating-point format." >&2 ; return 1
fi
if! validint "$fvalue" "" "" ; then
return 1
fi
fi
return 0
}
#if validfloat $1 ; then
# echo "$1 is a valid floating-point value"
#fi
#exit 0
Системное администрирование
Почему тут в качестве аргументов для функции исп-ся double quotes? shell scripting
он с числами работает как со строками, сделано дабы проверить что это int, ведь минус отсекается легко а вот с дробной частью в консолях сложнее (операций типа ceil или кастования в int нету). так что автор удаляет все цифры (предварительно отсеча минус) и смотрит не пусто ли число - если пусто то это int(ничего кроме цифр ведь нет) иначе это точно не он
сама функция проверяет является ли число интом (целым) и находится ли в диапазоне между задаными min и max, но в скрипте функции проверки присутствует проверка пустоты min и max, т. е. если указать их пустыми это будет просто проверка целое число или нет без проверки вхождения в заданный диапазон
так
validint "0" "-1" "1" выдаст правду т. к. ноль целое и находится между -1 и 1
validint "2" "-1" "1" выдаст ложь т. к. два целое но больше верхнего лимита 1
validint "2" "" "" выдаст правду т. к. два целое а диапазон не задан
переделать в проверку на дробное не трудно, надо перед проверкой на пустоту вычистить первую (одну) тчк/зпт так же как и минус а при отсечении минуса добавить ноль перед числом (дабы не было проблем с числами типа .36)
сама функция проверяет является ли число интом (целым) и находится ли в диапазоне между задаными min и max, но в скрипте функции проверки присутствует проверка пустоты min и max, т. е. если указать их пустыми это будет просто проверка целое число или нет без проверки вхождения в заданный диапазон
так
validint "0" "-1" "1" выдаст правду т. к. ноль целое и находится между -1 и 1
validint "2" "-1" "1" выдаст ложь т. к. два целое но больше верхнего лимита 1
validint "2" "" "" выдаст правду т. к. два целое а диапазон не задан
переделать в проверку на дробное не трудно, надо перед проверкой на пустоту вычистить первую (одну) тчк/зпт так же как и минус а при отсечении минуса добавить ноль перед числом (дабы не было проблем с числами типа .36)
Rino_Brasco .
так же это явная передача пустого аргумента, ведь у них нет имен только порядковые номера а разделяются пробелом, полезно когда нужно указать третий но опустить второй аргумент. когда оба аргумета отсутсвуют можно и кавыки не ставить
Возможно, validint как-то оперирует с количеством аргументов, и важно, чтобы их было ровно три.
Ваня Зыков
в этом то и проблема, что @2 @3 необязательные пар-ры
Похожие вопросы
- Почему специалисты по информационной безопасности безоговорочно выбирают линукс в качестве ос?
- Вычислить и вывести на экран в виде таблицы значения функции Python
- Всё в описании есть. Как решить проблему Missing helper. при запуске безопасного режима или какой либо функции на f8?
- Заказал программу и программист выпольнил. Как я смогу узнать, что он не оставил за собой допольнительных админ функций?
- Какой должна быть маска подсети, чтобы разбить сеть класса C на 8 подсетей? И объясните почему плзз)
- какие более производительные преобразователи аналогового-цифровые параллельного типа или последовательного и почему?
- IP-адреса подходят для обозначения сетей, а Ethernet-адреса — нет. Почему это так?
- Почему bios не видит флешку, почему???
- Почему full stack ну и backend, и frontend так много зарабатывают?
- Почему расширения не устанавливаются в google chrome?