Simple Calculator

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!

  1. The problem statement, all variables and given/known/data:
    Script a simple calculator. In the command line enter the script file
    /home/etc/mycalc or /home/etc/mycalc 1 + 1 . My script file should identify if the data needed to do the calculating is present (mycalc 1 + 1)
    or if it needs to ask for input (mycalc). I have two script files that will do the calculations either way but I need to combine them into one file. Also can anyone tell me how to automaticly get line numbers put in the script so when an error comes up it is easy to find the line without counting the lines?
    :confused:

  2. Relevant commands, code, scripts, algorithms:
    if, then, else, elif, test,fi

  3. The attempts at a solution (include all code and scripts):

#!/bin/bash
if [ $2 = "x" -o $2 = "X" ]
    then 
        let "anwser = $1 * $3"
        echo $1 x $2 $anwser
  else
        let "anwser = $1 $2 $3"
        echo $1 $2 $3 = $anwser
fi

exit
this works if the data is supplied at the command prompt.

#!/bin/bash
if test -z $3
   then
         echo "Enter first number: "
         read first
         echo "Enter second number"
         read second
         echo "Enter function (-+/x): "
         read function
fi
if [ $fdunction = "X" -o $function = "X" ]
   then
         let "anwser = $1 * $3"
         echo $1 x $3 = $anwser
   else
         let "anwser = $1 $2 $3"
         echo $1 $2 $3 = $anwser
fi
exit

this works if data is not supplied at command prompt.
I haven't to identify which script to use when mycalc or mycalc 1 + 1 is entered. I've tried different combinations of the if, then, else, ifel with test but keep getting error.
:mad:
4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):
Owens Community College, Toledo, Ohio, USA, Thomas McLeary, EET 208

Note: Without school/professor/course information, you will be banned if you post here! You must complete the entire template (not just parts of it).

Maybe you could start off by using code tags.

And what about indenting the code and using spacing. It will save you a lot of time in the long run. Probably a better grade too! Right now the code seems to all just glom together into an amorphous mass.

Being that I am just learing I am using what I am comfertable that works. I wrote the code for the thread trying to consreve space in the thread. In my script I have better spacing

My first advice would be to concentrate. Your sloppy typing - no matter if English is your first language or not - in the template does not persuade me (at least) that you are really interested in what you do. And one of the main rules in computing is: garbage in, garbage out.
Having said that, let me comment on your code:
You have two code snippets of which a large part is nearly identical. That's good. Make that part one - the central - block of your program, and massage the input variables, be they command line parameters to the script or interactively entered on the keyboard, so they fit the needs of your main block. Input validation would be part of that as well.
You have a "first" variable, and you have the command line parameter $1. Any idea about how to transform or combine them into one input to the main block?
And then, wouldn't it be nice to get an - optimally correct - result from your calculator? I can see that calculation only in half of your equations. Reconsider.

For your line numbers, try cat -n

This is my first Unix class and I am following the parameters given by the instructor for this exercise. He suggested writing two different script and making them work before joining them to work as one. When tested the two scripts work. With the $1 and "first" variable they are inputted differently, the $1 is coming from the command prompt and the "first" variable is being asked for since none was entered at the command prompt, Iam not sure how they could be combined comming from different inputs. I haven't thought about using the like script jointly for both scripts I'll see what I can do thanks.

The code looks ten times better with the spacing.

What kind of error message are you getting?

If code is posted something like the following format, you could probably give me some clues about the problem. Same with what you post.

$ cat temp.sh
echo "hello, world"
xxx
$ ./temp.sh
hello, world
./temp.sh: line 2: xxx: command not found

As the other poster mentioned, try to concentrate and be more careful...

Play around with positional parameters if you want to do such exercises. Here's a sample program to get you started.

[user@host ~]$ cat test.sh
#! /bin/bash

if [ $# -ne 2 ] # $# here is a special shell variable which gives you the number of command line arguments supplied
then
    echo "Please supply exactly two arguments."
    exit
fi

first=$1
second=$2

echo "First argument is: $first"
echo "Second argument is: $second"
[user@host ~]$ ./test.sh hello world
First argument is: hello
Second argument is: world
[user@host ~]$ ./test.sh
Please supply exactly two arguments.
[user@host ~]$

Open the program in vi vi test.sh . In the command mode (press ESC key, if you're unsure which mode you're currently in) and type :set nu . This will display the line numbers without affecting the program functionality. To remove the line numbers type this in command mode :set nonu . And I hope you're using vi for writing your scripts and not some GUI editor.