validfloat()
{
fvalue=$1
if [ ! -z $(echo $fvalue | sed 's/[^.]//g') ];then
decimalpart=$(echo $fvalue | cut -d. -f1)
fractionpart=${fvalue#*\.}
if [ ! -z $decimalpart ];then
if ! . validint.sh "$decimalpart" "" "";then
return 1
fi
fi
if [ ${fractionpart%${fractionpart#?}} = "-" ];then
echo "invalid floating-point number "-" not allowed after decimal point"
return 1
fi
if [ ${fractionpart} != "" ];then
if ! . validint.sh "$fractionpart" "0" "" ;then
return 1
fi
fi
else
if [ $fvalue = "-" ];then
echo "invalid float-point number"
return 1
fi
if ! . validint.sh $fvalue "" "";then
return 1
fi
fi
return 0
}
if validfloat $1;then
echo "$1 is a valid floating-point value"
fi
exit 0
在运行这段代码时,需要将脚本5 验证整数输入 中的36-38行换掉,变成:
validint $1 $2 $3
运行结果: