completed the course project for the chapter - Text Processing... and added a README...
[fcs:fcs-bash.git] / bash_tutor / ex5 / course_proj_4
1 #!/bin/bash
2 #
3 # this script will provide the user with a menu
4 # from which he can select any one of the options below:
5 #       1. Create a record
6 #       2. View records
7 #       3. Search for a record
8 #       4. Delete a record
9 # only options 1 and 2 are implemented in this script
10 # display msg "Construction work going on"
11 #       when option 3 or 4 is selected
12 #
13 # Put the whole case structure in a loop
14 # display the menu again and again
15 # add an option "Quit" to the menu
16 # when user selects quit option,
17 #       quit the script
18 #
19 # the lines in the file names.dat are printed neatly
20 # field seperator ":" is replaced by space
21 # titles are given for each column like (name, etc,.)
22 # records are sorted based on surname 
23 #
24
25 # storing filename in a var
26 # this file is where the records
27 #       will be stored
28 fname=names.dat
29
30 # storing the awk script file
31 #       in a variable "awk_filter"
32 # this filter is applied to organize
33 #       the contents of names.dat
34 awk_filter=organize.awk
35
36 # create a variable for option
37 # initialize the variable to some value
38 # any value other than 5(quit)
39 option=0
40
41 while [ ! $option = 5 ]
42 do
43 # display a menu
44 echo
45 echo '*********************************************************'
46 echo "1. Create a record"
47 echo "2. View records"
48 echo "3. Search for a record"
49 echo "4. Delete a record"
50 echo "5. Quit"
51 echo '*********************************************************'
52 echo
53 echo -n "Option: "
54 read option
55
56 case $option in
57
58         1)
59         echo
60         echo '**********************************************************'
61         echo '******************* Record Creation **********************'
62 #       prompt user for details and
63 #       store them in variables
64         echo
65         echo -n "Enter name: "
66         read name
67         echo -n "Enter Address: "
68         read addr
69         echo -n "Enter city: "
70         read city
71         echo -n "Enter State: "
72         read state
73         echo -n "Enter zip: "
74         read zip
75         echo
76
77 #       storing all the variables in a file
78         echo "$name:$addr:$city:$state:$zip" >> $fname
79         echo
80         echo "The record $name created successfully!!!"
81         echo
82         ;;
83
84 # ";;" => denotes the end of a case
85
86         2)
87 #       if names.dat file exists,
88 #       display all the records stored in names.dat
89         if [ -f $fname ]
90         then
91                 echo
92                 awk -f $awk_filter $fname
93                 echo
94
95 #               display count of number of records
96 #               one record per line
97 #               so, no. of records = no. of line
98 #               we can use "wc" - word count for counting
99 #               lines with "--lines" option
100                 echo
101                 echo "Num. of records: `more $fname | wc --lines`"
102                 echo
103         else
104 #               if names.dat file doesn't exist
105 #               display "Sorry! No records available now!"
106                 echo
107                 echo "Sorry! No records available now!"
108                 echo
109
110         fi
111 #       end of if
112         ;;
113 # end of case 2
114
115         3|4)
116         echo "Construction work going on!!";;
117
118 # end of cases 3 and 4
119
120         5)
121         echo "Quiting !!!"
122         exit
123         ;;
124
125 # end of case 5 (quit)
126
127         *)
128 #       This is the default case
129 #       this case is considered when all
130 #       other cases fail
131         echo
132         echo "Error: Invalid Input"
133         echo "Exiting script!"
134         ;;
135 # end of default case
136
137 esac
138 # end of case structure
139
140 done
141 # end of while loop
142