49 lines
1.0 KiB
Bash
49 lines
1.0 KiB
Bash
#!/bin/bash
|
|
|
|
function hjalp
|
|
{
|
|
echo "Ange tre argument, med mellanslag mellan dem!"
|
|
echo "Exempelvis: 4.5 x 9"
|
|
echo ""
|
|
echo "Giltiga operatorer är: + - x /"
|
|
echo "x motsvarar här multiplikation"
|
|
exit 1 # Avsluta skriptet om något gick fel
|
|
}
|
|
|
|
# Kontrollera så att användaren angett tre argument
|
|
if [ $# -ne 3 ]; then
|
|
hjalp
|
|
fi
|
|
|
|
# Kontrollera så att operatorn antingen är + - / eller x
|
|
echo $2 | egrep '[+/x-]' &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
hjalp
|
|
fi
|
|
|
|
# Kontrollera så att talen endast är heltal eller flyttal
|
|
echo $1 | egrep '^[+-]?[0-9]+\.?[0-9]*$' &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
hjalp
|
|
fi
|
|
|
|
echo $3 | egrep '^[+-]?[0-9]+\.?[0-9]*$' &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
hjalp
|
|
fi
|
|
|
|
# Gör om 'x' till '*', och spara ner operatorn i
|
|
# en egen variabel (även för övriga operatorer)
|
|
if [ "$2" == "x" ]; then
|
|
operator="*"
|
|
else
|
|
operator="$2"
|
|
fi
|
|
|
|
# Spara ner operanderna i egna variabler
|
|
operandEtt="$1"
|
|
operandTva="$3"
|
|
|
|
# Utför beräkningen
|
|
echo "scale=3; $operandEtt $operator $operandTva" | bc
|