Program:
#!/bin/bash file_name="address-book.txt" line() { printf "\n**********************************************\n"; } sline() { printf "\n################################################\n"; } # Function to read address book read_address_book() { line echo "Address Book Contain: "; printf "\n Name \t MobileNo \t Location \n" echo "$(cat $file_name)"; line } # Add Data into Address book # Primary Key: Mobile Number add_address_book() { line echo "Please Enter following Details: "; printf "\n Enter Name:" read name while true do printf "\n Enter Mobile Number:" read mobile_no pat="^[0-9]{10}$" while [[ ! $mobile_no =~ $pat ]] do print "\n Please enter correct phone number: " read mobile_no done grep $mobile_no $file_name RETURNSTATUS=`echo $?` if [ $RETURNSTATUS -eq 0 ] then echo "Please Enter Another Number" else break fi unset RETURNSTATUS unset mobile_no done printf "\n Enter Location:" read location printf "$name \t $mobile_no \t $location \n" >> $file_name echo "Record Inserted Succeffully" line read_address_book } # To Read Single Record read_single() { line printf "\n Enter Mobile No:" read mobile_no grep $mobile_no $file_name RETURNSTATUS=`echo $?` if [ $RETURNSTATUS -eq 1 ] then echo "No records found" else printf "\n\n Records:\n"; echo "$(grep $mobile_no $file_name)" fi line } # To Update Record in Address Book update_address_book() { line printf "\n Enter Mobile Number Search Key:" read search_key grep -n $search_key $file_name RETURNSTATUS=`echo $?` if [ $RETURNSTATUS -eq 1 ] then echo "No records found for \"$search_key"\" else printf "\nEnter the line number (the first number of the entry) that you'd like to edit:" read lineNumber echo for line in `grep -n "$search_key" $file_name` do number=`echo "$line" | cut -c1` # cut -c1 = only take first column if [ $number -eq $lineNumber ] then printf "\n Enter Name:"; read name printf "\n Enter Location:"; read location edit=`echo -e $name "\t" $search_key "\t $location"` lineChange="${lineNumber}s" sed -i -e "$lineChange/.*/$edit/" $file_name echo "The change has been made." fi done fi line read_address_book } # To Delete a Single Record delete_record_address() { line cat -n $file_name printf "\n Enter Record Number You Want to Delete:" read num sed -i -e $num"d" $file_name RETURNSTATUS=`echo $?` if [ $RETURNSTATUS -eq 1 ] then echo "No Such Record Present" else echo "Record Deleted Successfuly" fi line read_address_book } # Main Program: sline # Checking File Present or Not if [ -e $file_name ] then printf "Address Book is Present \n"; else printf "Creating a New Address Book \n"; ch=$(touch $file_name) RETURNSTATUS=$(echo $?) if [ $RETURNSTATUS -eq 0 ] then printf "\n New Address Book Created"; else printf "\n Address Book Failed to Create"; fi fi while true do sline echo " Welcome to AddressBook: "; echo " Options: "; echo " 1) To View Address Book"; echo " 2) To Add/Insert Address Record"; echo " 3) To Read/View Single Record"; echo " 4) To Update/Modify Record"; echo " 5) To Delete a Record"; echo " 6) Quit"; printf " Enter a number: "; read num sline case $num in 1) echo "You have selected Read Address Book" read_address_book;; 2) echo "You have selected Add Data into Address Book:" add_address_book;; 3) echo "You have selected Read Single Record Option" read_single;; 4) echo "You have selected Update Record " update_address_book;; 5) echo "You have selected Delete a Record " delete_record_address;; 6) echo "Thanks For Using Address Book" break;; *) echo " Please Select Correct Option";; esac unset num done
Output: