In this article I will share a sample script which will act as an interactive calculator using shell or bash script. Using this interactive calculator you can perform basic and some advanced mathematical calculations like sine, cosine etc. We will use bc tool to create our interactive calculator.

Sample Interactive Calculator - Shell Script
There will be two parts of our sample script wherein one part will be
“scriptbc” which we will add to our PATH variable so that it can be
automatically executed instead of using absolute path
[root@node1 ~]# vim /usr/local/bin/scriptbc
#!/bin/bash
# scriptbc--Wrapper for 'bc' that returns the result of a calculation
if [ "$1" = "-p" ] ; then
precision=$2
shift 2
else
precision=2 # Default
fi
bc -q -l << EOF
scale=$precision
$*
quit
EOF
exit 0
Next we will copy our “scriptbc” tool to /usr/local/bin so that it becomes part of our system binary. We will use this tool to create our interactive calculator.
[root@node1 ~]# cp /tmp/scriptbc /usr/local/bin
Now the last part is to create our main wrapper script for creating our interactive calculator. You can modify the script to use as per your requirement.
[root@node1 ~]# vim /tmp/calculator.sh
#!/bin/bash
# calc--A command line calculator that acts as a frontend to bc
scale=2
show_help()
{
cat << EOF
In addition to standard math functions, calc also supports:
a % b remainder of a/b
a ^ b exponential: a raised to the b power
s(x) sine of x, x in radians
c(x) cosine of x, x in radians
a(x) arctangent of x, in radians
l(x) natural log of x
e(x) exponential log of raising e to the x
j(n,x) Bessel function of integer order n of x
scale N show N fractional digits (default = 2)
EOF
if [ $# -gt 0 ] ; then
exec scriptbc "$@"
fi
echo "Calc--a simple calculator. Enter 'help' for help, 'quit' to quit."
/bin/echo -n "calc> "
while read command args
do
case $command
in
quit|exit) exit 0 ;;
help|\?) show_help ;;
scale) scale=$args ;;
*) scriptbc -p $scale "$command" "$args" ;;
esac
/bin/echo -n "calc> "
done
echo ""
exit 0
How it works?
The most interesting part of this code is thewhile readstatement,
which creates an infinite loop that displays thecalc>prompt until
the user exits, either by enteringquitor by entering an end-of-file
sequence (^D). The simplicity of this script is what makes it extra
wonderful: shell scripts don’t need to be complex to be useful!
Verify Interactive Calculator
By default, this script runs as an interactive tool that prompts the
user for the desired actions. If invoked with arguments, those arguments
are passed along to thescriptbccommand instead
[root@kerberos ~]# /tmp/calculator.sh
Calc--a simple calculator. Enter 'help' for help, 'quit' to quit.
calc> 4+5
9
calc> 4/5
.80
calc> 5/5
1.00
calc> 2/8
.25
calc> 7*7
49
calc> 2^2
4
calc> 2^7
128
calc> exit
bccommand can reveal some
of these glitches in unexpected ways. For example, inbc,
setscale=0and enter7 % 3. Now try it withscale=4. This
produces .0001, which is clearly incorrect.
Lastly I hope the steps from the article to create an interactive calculator using bash or shell script on Linux was helpful. So, let me know your suggestions and feedback using the comment section.
References:
Wicked Cool Scripts


