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函数是判断字符串是否全为数字.
热门推荐
7 简短的二胎祝福语
10 简短霸气女儿生日 祝福语
11 祝福语高考小众诗句简短
12 元旦祝福语20秒简短
13 老师过年祝福语大全 简短
14 一生祝福语简短
15 产检祝福语简短霸气
16 朋友店开张祝福语简短
17 生日爱情祝福语大全简短
18 朋友女儿生日祝福语 简短