Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
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?
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.
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).
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.
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.
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.