#!/bin/sh
entering_number() {
echo "Please enter $1"
read N
if [[ -z $N ]] then
echo "$1 must not be blank"
return 1
else
if [[ ! $N =~ ^([-])?([0-9]*[.])?[0-9]*$ ]] then
echo "$1 is not a number"
return 1
fi
fi
case $1 in
"A")
A=$N
;;
"B")
B=$N
;;
"C")
C=$N
;;
esac
return 0
}
echo "ax^2 + bx + c = 0 problem solver program"
A=0
B=0
C=0
# Typing procedure
while true; do
if ! entering_number "A" || ! entering_number "B" || ! entering_number "C"; then
continue
fi
break
done
# Calculating
if [[ $A == 0 ]] then
echo "(a=0) x = -c/b"
echo "x = -$C/$B"
echo "scale=3;-$C/$B" | bc
else
DELTA=$(($B**2 - 4*$A*$C))
echo "delta = $B^2-4*$A*$C = $DELTA"
if [[ DELTA -eq 0 ]] then
echo -n "x = -b/2a = -$B/(2*$A) = " ; echo $((-$B/(2*$A)))
elif [[ DELTA -lt 0 ]] then
echo "No solution because delta less than 0"
else
echo "(delta>0)"
echo -n "x1 = (-b+sqrt(delta))/(2a) = (-$B+sqrt($DELTA))/(2*$A) ="
echo "scale=3;(-$B+sqrt($DELTA))/(2*$A)" | bc
echo -n "x2 = (-b-sqrt(delta))/(2a) = (-$B-sqrt($DELTA))/(2*$A) ="
echo "scale=3;(-$B-sqrt($DELTA))/(2*$A)" | bc
fi
fi
RegEx code to validate a number
"^([-])?([0-9]+[.])?([0-9]+)?$"