# Linux shell to determine whether the input number is a reasonable floating-point number

Time：2021-6-10

This shell is used to determine whether the input number is a reasonable floating-point number

The implementation code is as follows:

``````
#!/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 function

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
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 ‘)] will be entered to divide. Into integer and decimal parts.
2）：if [ “\${fractionalPart%\${fractionalPart#?}}” = “-” ] If the decimal point is followed by a ‘-‘ sign, the output character is illegal
3) Then some if statements are used to judge whether the decimal and integer parts are legal
4) Because the valiint function is not given, the script cannot be executed completely

## The road of high salary, a more complete summary of MySQL high performance optimization in history

preface MySQL for many linux practitioners, is a very difficult problem, most of the cases are because of the database problems and processing ideas are not clear. Before the optimization of MySQL, we must understand the query process of MySQL. In fact, a lot of query optimization work is to follow some principles so that […]