COP3353 - 2013 Spring
Assignment 2 "Next Year's Calendar"
Due by 5:00pm Thursday, June 27
Late assignments must be agreed with the instructor, and must be done by July 2

Shell script

Step 0

Login to linprog{1,2,3,4}.cs.fsu.edu. I recommend going into bash, but it's not really necessary for this assignment, just convenient.

Step 1

Create a directory called assign2/ in your home directory:

Change directory into assign2/:

Create a new Bash shell script called assign2.sh; if you use emacs, you can do it with:

with vi, like:

(Hint: you may want to also log into linprog{1,2,3,4}.cs.fsu.edu with a second window, if you don't want to use a "shell" buffer inside of emacs for testing your script.)

Your shell script should create output that looks like this:


                               2014                                    _________________________________________
                                                                      / Be careful of reading health books, you \                                      
       January               February                 March           | might die of a misprint.                |
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa    |                                         |
          1  2  3  4                      1                      1    \ -- Mark Twain                           /
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    2  3  4  5  6  7  8     -----------------------------------------
12 13 14 15 16 17 18    9 10 11 12 13 14 15    9 10 11 12 13 14 15            \   ^__^
19 20 21 22 23 24 25   16 17 18 19 20 21 22   16 17 18 19 20 21 22             \  (oo)\_______
26 27 28 29 30 31      23 24 25 26 27 28      23 24 25 26 27 28 29                (__)\       )\/\                                                     
                                              30 31                                   ||----w |
        April                   May                   June                            ||     ||
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa
       1  2  3  4  5                1  2  3    1  2  3  4  5  6  7
 6  7  8  9 10 11 12    4  5  6  7  8  9 10    8  9 10 11 12 13 14
13 14 15 16 17 18 19   11 12 13 14 15 16 17   15 16 17 18 19 20 21     _________________________________________
20 21 22 23 24 25 26   18 19 20 21 22 23 24   22 23 24 25 26 27 28    / If one cannot enjoy reading a book over \                                      
27 28 29 30            25 26 27 28 29 30 31   29 30                   | and over again, there is no use in      |
                                                                      | reading it at all.                      |
        July                  August                September         |                                         |
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa    \ -- Oscar Wilde                          /
       1  2  3  4  5                   1  2       1  2  3  4  5  6     -----------------------------------------
 6  7  8  9 10 11 12    3  4  5  6  7  8  9    7  8  9 10 11 12 13       \                                                                             
13 14 15 16 17 18 19   10 11 12 13 14 15 16   14 15 16 17 18 19 20        \                                                                            
20 21 22 23 24 25 26   17 18 19 20 21 22 23   21 22 23 24 25 26 27            .--.
27 28 29 30 31         24 25 26 27 28 29 30   28 29 30                       |o_o |
                       31                                                    |:_/ |
       October               November               December                //   \ \                                                                   
Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa   Su Mo Tu We Th Fr Sa         (|     | )
          1  2  3  4                      1       1  2  3  4  5  6        /'\_   _/`\                                                                  
 5  6  7  8  9 10 11    2  3  4  5  6  7  8    7  8  9 10 11 12 13        \___)=(___/
12 13 14 15 16 17 18    9 10 11 12 13 14 15   14 15 16 17 18 19 20
19 20 21 22 23 24 25   16 17 18 19 20 21 22   21 22 23 24 25 26 27
26 27 28 29 30 31      23 24 25 26 27 28 29   28 29 30 31
                       30

Here are some tools that you can use to do the assignment:

So analyzing the above output, the different components are:

Here is an outline of how I wrote my script:

#!/bin/bash



#
# Do calendar bits
#

  # Create a temporary file for the calendar.
  # Get the year from "date".
  # Increase the year by one and then call the "cal" program with that year. Write the
  # output to the temporary calendar file.


#
# Do fortune bits
#

  # Create a temporary file to hold both of the "fortunes".
  # Collect first fortune from the fortune server at 19000 and put it in the fortune temporary file.
  # Collect second fortune from the fortune server at 19001 and append it to the fortune temporary file.


#
# Now use "pr" to push everything together (see Assignment02 guidlines), and output everything to stdout
#



#
# Remove temporary files and exit
#

exit 0


Next year must be computed, not a fixed value of "2014".

Once you have written your program, run it and redirect the output to a file named "cal2014.txt" in your assign2/ directory:

Finally, cd back into your home directory and create a tar file, named with the result of the uuidgen program:

Check the contents of the file:

Step 3

Finally, copy the tar file to the directory ~rlangley/Assignment02/