I'm making a bash script to do basic arthmetic and when I do:
if [ $2 == "*" ]
it does not work.
How can I check for asterisk?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.
Sign up to join this communityYou need to escape or quote the asterisk in the command line:
./calculator.sh 2 \* 2
./calculator.sh 2 '*' 2
and enclose the $2
in double quotes:
if [ "$2" == "*" ]
The problem isn't that the if
statement isn't working, it is that the asterisk on the command line is being globbed.
So if your script was called mycalc
and run from the command line you do
mycalc 2 * 3
The *
will get globbed, and converted to all the names of the files in the current folder.
To avoid expansion, you would need to do
mycalc 2 \* 3
The \
escapes the asterisk and passes it through without changing it.
You might want to consider x
for the multiplication operation to avoid this.
Find ASCII value of *
by using the command below
printf "%d\n" "'`echo "*" | awk '{print $1}'`"
and use that value for condition checking.
bc
ordc
if you want a calculator.