#!/bin/bash # # this is a shell script to interact with # a simple database file 'database.db' # printDBHead(){ awk -F ":" '{ for(i=1;i<=NF;i++){ printf "%10s", $i if((i%5)==0){ printf "\n"; exit } } } ' database.db } printDBHeadwithColon(){ awk '{ for(i=1;i<=NF;i++){ printf "%10s", $i printf "\n"; exit } } ' database.db } printDB(){ awk -F ":" '{ if(NR>=2){ for(i=1;i<=NF;i++){ printf "%10s", $i if((i%5)==0){ printf "\n" } } } }' database.db } printDBwithColon(){ awk '{ if(NR>=2){ for(i=1;i<=NF;i++){ printf "%s", $i printf "\n" } } }' database.db } echo "-Welcome to H.I.S.D." echo "-Human Interface Service for Database.db" while true do echo "-please make a selection: " echo "[1] - Print database" echo "[2] - Add a new record" echo "[3] - Update a record" echo "[4] - Delete a record" echo "[5] - Sort Records" echo "[6] - Search Database" echo "[0] - Quit" printf ">> " && read selection stripsel=$(echo $selection | egrep ^[[:digit:]]+$) while [[ $stripsel == "" || $selection -lt 0 || $selection -gt 6 ]] do echo "invalid selection" printf ">> " && read selection stripsel=$(echo $selection | egrep ^[[:digit:]]+$) done case "$selection" in ## exit 0) echo "bye... " && exit 0 ;; ## print database 1) echo "printing..." printDBHead printDB;; ## add record 2) printf "Name? " && read name printf "What is the 6 char ID? " && read idn printf "Age? "&& read age printf "Male or Female (M or F)? " && read gender printf "Are you a robot (Y or N)? " && read robot echo "$name:$idn:$age:$gender:$robot" >> database.db printf "successfully inserted... " ;; ## update record, use sed 3) ;; ## delete record 4) printDB printf "delete which line >> " && read d line=`expr $d + 1` sed -i "$line"'d' database.db;; ## sort record 5) printDBHeadwithColon > sorted.db printDBwithColon | sort >> sorted.db cat sorted.db > database.db && rm sorted.db echo "database sorted... ";; ## search records 6) printf "Search for: " && read query printDBHead printDB | grep $query;; esac done