首页 > 开发 > Linux Shell > 正文

linux shell实现判断输入的数字是否为合理的浮点数

2020-07-27 19:01:38
字体:
来源:转载
供稿:网友

这个shell是来判断输入的数字是否为合理的浮点数

实现代码如下:

#!/bin/sh# validfloat -- Tests whether a number is a valid floating-point value.# Note that this script cannot accept scientific (1.304e5) notation.# To test whether an entered value is a valid floating-point number, we# need to split the value at the decimal point. We then test the first part# to see if it's a valid integer, then test the second part to see if it's a# valid >=0 integer, so -30.5 is valid, but -30.-8 isn't.. validint  # Bourne shell notation to source the validint functionvalidfloat(){ 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    return 1   fi  fi  if [ "${fractionalPart%${fractionalPart#?}}" = "-" ] ; then   echo "Invalid floating-point number: '-' not allowed /    after decimal point" >&2   return 1  fi  if [ "$fractionalPart" != "" ] ; then   if ! validint "$fractionalPart" "0" "" ; then    return 1   fi  fi  if [ "$decimalPart" = "-" -o -z "$decimalPart" ] ; then   if [ -z $fractionalPart ] ; then    echo "Invalid floating-point format." >&2 ; 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}

notice:
1): if [ ! -z $(echo $fvalue | sed 's/[^.]//g') ] 将输入,以.分成整数和小数部分。
2):if [ "${fractionalPart%${fractionalPart#?}}" = "-" ] 判断小数点后面如果接‘-'号,这输出字符不合法
3)接着的一些if语句就是判断小数及整数部分合不合法
4)由于 valiint函数没给出,脚本不能完全执行,valiint函数是判断字符串是否全为数字.

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表