Visit The New, Modern Unix Linux Community

Help with creating a simple shell script

Thread Tools Search this Thread
Homework and Emergencies Homework & Coursework Questions Help with creating a simple shell script
# 1  
Help with creating a simple shell script

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:

Write a shell script that accepts two arguments. The two arguments are the
name of 2 files.
• If the arguments are not 2, display “need 2 arguments” and quit.
• If one or both of the arguments are directory, display “No directories
please” and quit.
• If one of the two files does not exist, display “filename: no such file” where
filename is the name of the missing file, then quit. If the two files do not
exist, repeat the above for the 2 files, each in a separate line and quit.
• If the 2 files do exist, then display one of the two phrases, “The two files
are identical” or “The two files are not identical” then quit.

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

printf "%s\n" "$1"
cat "$2"
} > tempfile.$$
mv tempfile.$$ "$2"

4. Complete Name of School (University), City (State), Country, Name of Professor, and Course Number (Link to Course):

Concodia University, Toronto, Canada , Hamza, CS1032

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).

Last edited by Scrutinizer; 03-20-2017 at 01:57 AM.. Reason: code tags
# 2  

OK, there's a few concepts you'd need to get to grips with in order to write a solution to this problem. You've not said what shell or platform you're using, so I'm going to assume you're using Bash on Linux here, as that's probably the most likely possibility.

Firstly: knowing how many parameters a script has passed to it. This is actually fairly straightforward, and is handled by the Bash built-in variable $#. Take a look at this one-line example script, and try running it with different numbers of arguments. You should soon get a feel for how this works.

echo "You provided $# arguments to this script."

Next, testing things. There will be times (such as in your problem statement here) when you need to know how many arguments there are, or if they're equivalent to each other. Bash has a few ways of doing this, the simplest and most straightforward for your purposes being the if statement.

For instance, try running this second small example script with different numbers of arguments. Take particular note of what happens if you run it with three arguments.


if [ "$#" == "3" ]
        echo "You entered three arguments - that's my lucky number, thank you !"
        echo "Hmm.  That's an OK number of arguments, but it's not my favourite. Thanks for trying though."

Here, we're checking to see if the number of arguments ($#) is equal (==) to the number 3. If it is, we display a special message. If it's anything other than three (in other words, if it's something else), we display another message instead.

Now, Bash can test for all kinds of things besides whether one thing is equal to another thing. Of particular interest to you should be the conditional tests it can carry out to check if something is a file, or a directory, or if it exists, and so on. If you look at the man page for Bash in the "CONDITIONAL EXPRESSIONS" section, you'll find a whole list of these.

For example, if I wanted to check to see if the second argument passed to my script actually existed on the filesystem, I could do something like this.


if [ -e "$2" ]
        echo "Hey, look !  The second argument you gave me exists !  Let's take a look at what it is:"
        /bin/ls -ld "$2"

Here, we check to see if the second argument ($2) exists (the meaning of the -e conditional expression). If it does, we print a message, and run the command /bin/ls -ld on it.

The last thing you'll probably need to understand to fully solve this problem is that conditional expressions (and plenty else besides) can be chained together using logic such that at least one of them must be true, or that they all must be true. Take a look at the "Compound Commands" section of the Bash man page to read how they all work.

I'll leave you with one last example though of a situation where we want to check that two particular things are the case at the same time.

if [ "$1" == "dog" ] && [ "$2" == "cat" ]
        echo "Those are my two favourite animals too !  We have a lot in common !"
        echo "Sorry, but those aren't my two favourite animals."

Here, if the first argument ($1) and (the meaning of && here) the second argument ($2) are equal to "dog" and "cat" respectively, we print a special message. If they're not both set to exactly those things (and they both must be, due to our use of && here) then we print another message instead.

Anyway, hope all this helps give you some pointers on how to get started, and which documentation is best to look at to familiarise yourself with the Bash tests you'll need to know about.
This User Gave Thanks to drysdalk For This Post:
# 3  
This is awesome help. Thanks so much for your time!!
# 4  
Originally Posted by Scripter12345
• If the 2 files do exist, then display one of the two phrases, “The two files
are identical” or “The two files are not identical” then quit.
If you don't want to display either phrase at random, look into the diff or cmp commands...

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #535
Difficulty: Medium
In C, the Boolean type false is associated with zero while any non-zero value is associated with true.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Creating a simple ID Script

Hello everybody, :wall:I am new to Linux and I want to create a simple script on Ubuntu that will allow to make database with a few perimeters. create file and name it Database and complete it with any information id firstname lastname phone 0 1 2 3 4 ... (4 Replies)
Discussion started by: kkishore4580
4 Replies

2. Shell Programming and Scripting

Creating IN list in PLSQL script dynamically by using shell script

Hi all, I have a PLSQL script which has a IN list where it takes some ids as input. For example SELECT * FROM EMPLOYEE WHERE EMPLOYEE_ID IN (comma separated list ) I want to run this quest inside a shell script but I would like to prepare the IN list dynamically where the employee ids... (1 Reply)
Discussion started by: LoneRanger
1 Replies

3. Shell Programming and Scripting

how to execute ksh simple shell script without creating .sh file

please help me to execute a simple shell script like for i in `ls echo $i done . i dont want to create a new sh file to execute it. Can i just type and execute it ? because I always this kind of simple for loops . Please help . Thanks (7 Replies)
Discussion started by: Sooraj_Linux
7 Replies

4. Shell Programming and Scripting

(Urgent):Creating flat file using sql script and sqlplus from UNIX Shell Script

Hi, I need help urgently for following issue. Pls help me to resolve this issue. I am calling sql script file(file1.sql) from UNIX Shell Script(script1.ksh) using sql plus and trying to create flat file that contains all records returned from SQL query in SQL script(file1.sql) I given... (6 Replies)
Discussion started by: praka
6 Replies

5. Shell Programming and Scripting

Creating simple shell program

Hi, I'm new to UNIX shell programming... can anyone help in doing the following : 1) create a text file named "Model File" having following columns : Name Number Physics Chemistry 2) prompt user to n rows enter the name, number, physics ,chemistry 3) display the entire columns and rows... (1 Reply)
Discussion started by: Mayuri P R
1 Replies

6. Shell Programming and Scripting

simple shell - how to get a parameter typed in a shell script

Hi, I am new to unix and using linux 7.2. I would like to create a script that would make it easyer for me to run my java programms. At the moment I have to type java myJavaprogram I am trying to write a script that will allow me to type something like this "myscript myJavaprogram" or maybe... (4 Replies)
Discussion started by: cmitulescu
4 Replies

7. Shell Programming and Scripting

creating a simple archiving script

Im trying to create a script to archive specified directories into a specified tarball backup file. This is what i want the input to look like ex. save -i '/bin/b*' -i '/bin/ls' -o backup this is what i have #!/bin/bash #save - backup file script unset myInput unset myOutput while... (3 Replies)
Discussion started by: lensmen
3 Replies

8. Shell Programming and Scripting

Creating a command history feature in a simple UNIX shell using C

I'm trying to write a history feature to a very simple UNIX shell that will list the last 10 commands used when control-c is pressed. A user can then run a previous command by typing r x, where x is the first letter of the command. I'm having quite a bit of trouble figuring out what I need to do, I... (2 Replies)
Discussion started by: -=Cn=-
2 Replies

9. Shell Programming and Scripting

Creating my first Shell Script

I have an assignment in my programming class to write a shell script that will use command line parameters, display the # of parameters, display all parameters on the command line and display the parameters $0-$9. I understand some of the code (I will be using 'n' to represent the count through... (1 Reply)
Discussion started by: plmahan
1 Replies

10. Shell Programming and Scripting

help on creating shell script

Can some one smart here help I need to create a shell script that does this below using vi editor. decrypts a file (specified as an argument to the script) containing text which was encrypted using the ROT-13 algorithm. The decrypted text should be written to a new file leaving the input file... (1 Reply)
Discussion started by: master_6ez
1 Replies

Featured Tech Videos