linux shell实现判断输入的数字是否为合理的浮点数
这个shell是来判断输入的数字是否为合理的浮点数
实现代码如下:
#!/bin/sh
#validfloat--Testswhetheranumberisavalidfloating-pointvalue.
#Notethatthisscriptcannotacceptscientific(1.304e5)notation.
#Totestwhetheranenteredvalueisavalidfloating-pointnumber,we
#needtosplitthevalueatthedecimalpoint.Wethentestthefirstpart
#toseeifit'savalidinteger,thentestthesecondparttoseeifit'sa
#valid>=0integer,so-30.5isvalid,but-30.-8isn't.
.validint#Bourneshellnotationtosourcethevalidintfunction
validfloat()
{
fvalue="$1"
if[!-z$(echo$fvalue|sed's/[^.]//g')];then
decimalPart="$(echo$fvalue|cut-d.-f1)"
fractionalPart="$(echo$fvalue|cut-d.-f2)"
if[!-z$decimalPart];then
if!validint"$decimalPart""""";then
return1
fi
fi
if["${fractionalPart%${fractionalPart#?}}"="-"];then
echo"Invalidfloating-pointnumber:'-'notallowed\
afterdecimalpoint">&2
return1
fi
if["$fractionalPart"!=""];then
if!validint"$fractionalPart""0""";then
return1
fi
fi
if["$decimalPart"="-"-o-z"$decimalPart"];then
if[-z$fractionalPart];then
echo"Invalidfloating-pointformat.">&2;return1
fi
fi
else
if["$fvalue"="-"];then
echo"Invalidfloating-pointformat.">&2;return1
fi
if!validint"$fvalue""""";then
return1
fi
fi
return0
}
notice:
1):if[!-z$(echo$fvalue|sed's/[^.]//g')]将输入,以.分成整数和小数部分。
2):if["${fractionalPart%${fractionalPart#?}}"="-"]判断小数点后面如果接‘-'号,这输出字符不合法
3)接着的一些if语句就是判断小数及整数部分合不合法
4)由于valiint函数没给出,脚本不能完全执行,valiint函数是判断字符串是否全为数字.
热门推荐
3 祝福语简短的微信
10 幼儿祝福语大全简短贺卡
11 感谢教官文案祝福语简短
12 鼠年同事祝福语简短创意
13 元旦祝福语 简短独特群发
14 妈咪跟我生日祝福语简短
15 给儿子新婚祝福语简短
16 伴娘祝福语长文案简短
17 恭喜高考完祝福语简短
18 生日祝福语送老公简短