Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Maintain automobile records in a database Write a shell script to create, view a

ID: 3566964 • Letter: M

Question

Maintain automobile records in a database

Write a shell script to create, view and modify a simple database that contains automobile records. The shell

script has to be done in Bourne shell syntax (bash as a matter of fact). You may use all features of bash and

any Unix command (in the version that is available on your personal Linux system or turing and hopper).

The name of your script is formed from your Z-id followed by ".db". For example, if your Z-id is "z123456"

then your script must be called "z123456.db".

The first parameter is always the database being queried. The second parameter is always the command that

will be executed. Any parameters that follow are specific to the command that was issued.

The general syntax of script invocation is:

z123456.db dbname command param1 ... paramN

where:

dbname is the name of the file that contains the database records

command is one of: new, add, show or delete

param1 ... paramN are parameters to the specified command

Description of commands and parameters

new "title text"

creates a new database with name dbname. The text following the new command will become the first

line in the database file. If no text is given, the default is "Automobile Database".

An error occurs if the database already exists.

Upon success, the new command reports "New database created".

add make model year color

adds a new record to the database. 4 parameters must be listed in this order: make, model, year, color.

The year must be a 4 digit number greater than 1870 and smaller than 2020. The other parameters are

strings.

Upon success, the add command reports "Successfully added a record to the database".

show all

show single number

show range number1 number2

allows the user to view all records, just a single record or a range of records in the database. To show a

single record the record number is specified after the keyword "single". To show a range of records the

2 numbers after the keyword "range" indicate the start and the end of the range, they are inclusive. The

second number must be larger than the first.

The output of the show command lists records in the database. The first line of output always is the title

text from the database. Then follow the lines for the requested entries in the database, either all, a single

line, or a range.

An example "show all" output looks like this:

1 of 3 Automobile Database

Ford, Mustang, 2008, blue with white stripes

Mitsubishi, Lancer, 2009, white

Toyota, Camry LE, 2004, black

Porsche, Cayenne S, 2007, red

An example "show range 2 3" output looks like this:

Automobile Database

Mitsubishi, Lancer, 2009, white

Toyota, Camry LE, 2004, black

delete all

delete single number

delete range number1 number2

allows the user to delete records: either all, just a single record or a range of records. To delete a single

record the record number is specified after the keyword "single". To delete a range of records the 2

numbers after the keyword "range" indicate the start and the end of the range, they are inclusive. The

second number must be larger than the first.

The delete command reports the number of lines deleted, such as "Successfully deleted 4 records from

the database". Note that the title line in the database is never deleted.

Error checking

If an an error occurs, print an error message and exit the script. Specifically your script should:

ensure that the command is spelled correctly

ensure that all required parameters to the appropriate command are present

ensure that line numbers fall within the lines present in the database file

ensure that the database file exists and is readable, and in the case of "add" and "delete" also writable

if the file is empty (ie. no records), your script should print out a message that no records are found

Database file format

The first line in the database file contains the title text specified in the "new" command. The remaining lines

specify automobile entries with fields that are separated by ", ".

For example, the database file for the above "show all" command would contain:

Automobile Database

Ford, Mustang, 2008, blue with white stripes

Mitsubishi, Lancer, 2009, white

Toyota, Camry LE, 2004, black

Porsche, Cayenne S, 2007, red

Example run

% ./z123456.db DB new "Example for Assignment"

New database created

% ./z123456.db DB add Ford Mustang 2008 "blue with white stripes"

Successfully added a record to the database

% ./z123456.db DB add Mitsubishi Lancer 2009 white

Successfully added a record to the database

% ./z123456.db DB add Toyota "Camry LE" 2004 black

2 of 3Successfully added a record to the database

% ./z123456.db DB add Porsche "Cayenne S" 2007 red

Successfully added a record to the database

% ./z123456.db DB show all

Example for Assignment

Ford, Mustang, 2008, blue with white stripes

Mitsubishi, Lancer, 2009, white

Toyota, Camry LE, 2004, black

Porsche, Cayenne S, 2007, red

% ./z123456.db DB delete single 2

1 record deleted

% ./z123456.db DB show all

Example for Assignment

Ford, Mustang, 2008, blue with white stripes

Toyota, Camry LE, 2004, black

Porsche, Cayenne S, 2007, red

% cat DB

Example for Assignment

Ford, Mustang, 2008, blue with white stripes

Toyota, Camry LE, 2004, black

Porsche, Cayenne S, 2007, red

%

Additional notes:

Be sure to test your script thoroughly.

Your file must use /bin/bash in its shebang line.

Make sure your script does not leave any temporary files behind.

Make sure that your shell script file is a regular Unix text file.

Don't modify your file on Windows using notepad, it will add extra ^M characters at the end of each

line.

HAS TO WORK PERFECTLY WITH THE SAME OUTPUT GIVEN AS THE EXAMPLE WHEN RUN THROUGH THE COMMAND PROMPT IN LINUX MINT or other based Bash shells.

Explanation / Answer

db=arg1 command=arg2 switch command: create: if exists db error if arg3 != "" echo arg3 > db else echo "Automobile Database" > db echo "New database created" add: make = arg3 model = arg4 year = arg5 color = arg6 if arg3 == "" ask make if arg4 == "" ask model if arg5 == "" ask year if arg6 == "" ask color if year < 1870 || year > 2020 error echo "make, model, year, color" >> db echo "Successfully added a record to the database" view: switch arg3: max=$( wc -l db ) all: cat db single: if arg4 > max error sed -ne "1p;arg4p" db range: if arg4 > max || arg5 > max || arg4 > arg5 error sed -ne "1p;arg4,arg5p" db delete: switch arg3: max=$( wc -l db ) all: sed -ie '2,$d' db single: if arg4 > max error sed -ie "arg4d" db range: if arg4 > max || arg5 > max || arg4 > arg5 error sed -ie "arg4,arg5d" db *: show help
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote