#!/bin/sh # # Input shell script for teladr.tab # .. ~/scripts/screen init_attr() { set_attr NORMAL BLACK WHITE set_attr TITLE BLUE WHITE set_attr PROMPT RED WHITE set_attr ENTRY BLACK WHITE } clear_all_fields() { efternamn=""; fornamn=""; adress=""; postadress=""; telefon="" fax=""; nyckelord=""; kommentar=""; return } draw_screen() { cls ${A_NORMAL} echo -e " ${A_TITLE}1 Efternamn:\t${A_ENTRY}$efternamn ${A_TITLE}2 Förnamn:\t${A_ENTRY}$fornamn ${A_TITLE}3 Adress:\t${A_ENTRY}$adress ${A_TITLE}4 Postadress:\t${A_ENTRY}$postadress ${A_TITLE}5 Telefon:\t${A_ENTRY}$telefon ${A_TITLE}6 Fax:\t\t${A_ENTRY}$fax ${A_TITLE}7 Nyckelord:\t${A_ENTRY}$nyckelord ${A_TITLE}8 Kommentar:\t${A_ENTRY}$kommentar " echo -n "${A_PROMPT}Command (1-8, a, d, c, q, s, ?): ${A_NORMAL}" return } help() { cls ${A_NORMAL} echo " 1-8 edit field a add record d delete record c clear all fields q query s sort data file ? this help page " read } chk_first() { if [ $first -eq 0 ]; then awk_string="$awk_string && " fi first=0 return } query() { first=1 awk_string="BEGIN {FS = \"\t\"}; " if [ "$efternamn" != "" ]; then chk_first awk_string="$awk_string (\$1 ~ /$efternamn/)" fi if [ "$fornamn" != "" ]; then chk_first awk_string="$awk_string (\$2 ~ /$fornamn/)" fi if [ "$adress" != "" ]; then chk_first awk_string="$awk_string (\$3 ~ /$adress/)" fi if [ "$postadress" != "" ]; then chk_first awk_string="$awk_string (\$4 ~ /$postadress/)" fi if [ "$telefon" != "" ]; then chk_first awk_string="$awk_string (\$5 ~ /$telefon/)" fi if [ "$fax" != "" ]; then chk_first awk_string="$awk_string (\$6 ~ /$fax/)" fi if [ "$nyckelord" != "" ]; then chk_first awk_string="$awk_string (\$7 ~ /$nyckelord/)" fi if [ "$kommentar" != "" ]; then chk_first awk_string="$awk_string (\$8 ~ /$kommentar/)" fi awk_string="$awk_string {printf " awk_string="${awk_string} \"Efternamn: %s\n" awk_string="${awk_string}Förnamn: %s\n" awk_string="${awk_string}Adress: %s\n" awk_string="${awk_string}Postadress: %s\n" awk_string="${awk_string}Telefon: %s\n" awk_string="${awk_string}Fax: %s\n" awk_string="${awk_string}Nyckelord: %s\n" awk_string="${awk_string}Kommentar: %s\n\n\", " awk_string="${awk_string} \$1, \$2, \$3, \$4, \$5, \$6, \$7, \$8}" # echo $awk_string # read cls ${A_NORMAL} awk "$awk_string" $datafile | less return } delete() { echo -n "Really delete (y/n)? " read r if [ "$r" != "y" ]; then return; fi first=1 awk_string="BEGIN {FS = \"\t\"}; ! (" if [ "$efternamn" != "" ]; then chk_first awk_string="$awk_string (\$1 ~ /$efternamn/)" fi if [ "$fornamn" != "" ]; then chk_first awk_string="$awk_string (\$2 ~ /$fornamn/)" fi if [ "$adress" != "" ]; then chk_first awk_string="$awk_string (\$3 ~ /$adress/)" fi if [ "$postadress" != "" ]; then chk_first awk_string="$awk_string (\$4 ~ /$postadress/)" fi if [ "$telefon" != "" ]; then chk_first awk_string="$awk_string (\$5 ~ /$telefon/)" fi if [ "$fax" != "" ]; then chk_first awk_string="$awk_string (\$6 ~ /$fax/)" fi if [ "$nyckelord" != "" ]; then chk_first awk_string="$awk_string (\$7 ~ /$nyckelord/)" fi if [ "$kommentar" != "" ]; then chk_first awk_string="$awk_string (\$8 ~ /$kommentar/)" fi if [ $first -eq 1 ]; then echo "Error: no fields specified." sleep 2 return fi awk_string="$awk_string ) {print \$0}" tmp="/tmp/deltmp.$RANDOM" awk "$awk_string" $datafile >> $tmp cp $tmp $datafile rm $tmp return } do_sort() { sort -o $datafile $datafile } ######################################################################### ######################################################################### datafile=~/datafiles/teladr.tab init_attr draw_screen while read r; do case $r in 1) echo -n "${A_PROMPT}Efternamn: ${A_NORMAL}" read efternamn ;; 2) echo -n "${A_PROMPT}Förnamn: ${A_NORMAL}" read fornamn ;; 3) echo -n "${A_PROMPT}Adress: ${A_NORMAL}" read adress ;; 4) echo -n "${A_PROMPT}Postadress: ${A_NORMAL}" read postadress ;; 5) echo -n "${A_PROMPT}Telefon: ${A_NORMAL}" read telefon ;; 6) echo -n "${A_PROMPT}Fax: ${A_NORMAL}" read fax ;; 7) echo -n "${A_PROMPT}Nyckelord: ${A_NORMAL}" read nyckelord ;; 8) echo -n "${A_PROMPT}Kommentar: ${A_NORMAL}" read kommentar ;; a) echo "$efternamn $fornamn $adress $postadress $telefon $fax $nyckelord $kommentar" >> $datafile clear_all_fields ;; d) delete ;; c) clear_all_fields ;; q) query ;; s) do_sort ;; \?) help ;; esac draw_screen done cls ${A_NONE} .