#!/bin/sh # # Input shell script for "skivor.tab" music database # .. ~/scripts/screen init_attr() { set_attr NORMAL BLACK WHITE set_attr TITLE BLUE WHITE set_attr PROMPT RED WHITE set_attr ENTRY BLACK WHITE return } clear_all_fields() { artist=""; titel=""; utg_ar=""; musiktyp=""; format=""; utlanad="" kommentar=""; trk_1=""; trk_2=""; trk_3=""; trk_4=""; trk_5="" trk_6=""; trk_7=""; trk_8=""; trk_9=""; trk_10=""; trk_11="" trk_12=""; trk_13=""; trk_14=""; trk_15=""; trk_16=""; trk_17="" trk_18=""; trk_19=""; trk_20=""; trk_21=""; trk_22=""; trk_23="" trk_24=""; trk_25=""; trk_26=""; trk_27=""; trk_28=""; trk_29="" trk_30="" return } draw_screen() { cls ${A_NORMAL} case $display_page in 1) echo -e " ${A_TITLE}1 Artist:\t${A_ENTRY}$artist ${A_TITLE}2 Titel:\t${A_ENTRY}$titel ${A_TITLE}3 Utg-år:\t${A_ENTRY}$utg_ar ${A_TITLE}4 Musiktyp:\t${A_ENTRY}$musiktyp ${A_TITLE}5 Format:\t${A_ENTRY}$format ${A_TITLE}6 Utlånad:\t${A_ENTRY}$utlanad ${A_TITLE}7 Kommentar:\t${A_ENTRY}$kommentar " ;; 2) echo " ${A_TITLE}t1: ${A_ENTRY}$trk_1 ${A_TITLE}t2: ${A_ENTRY}$trk_2 ${A_TITLE}t3: ${A_ENTRY}$trk_3 ${A_TITLE}t4: ${A_ENTRY}$trk_4 ${A_TITLE}t5: ${A_ENTRY}$trk_5 ${A_TITLE}t6: ${A_ENTRY}$trk_6 ${A_TITLE}t7: ${A_ENTRY}$trk_7 ${A_TITLE}t8: ${A_ENTRY}$trk_8 ${A_TITLE}t9: ${A_ENTRY}$trk_9 ${A_TITLE}t10: ${A_ENTRY}$trk_10 ${A_TITLE}t11: ${A_ENTRY}$trk_11 ${A_TITLE}t12: ${A_ENTRY}$trk_12 ${A_TITLE}t13: ${A_ENTRY}$trk_13 ${A_TITLE}t14: ${A_ENTRY}$trk_14 ${A_TITLE}t15: ${A_ENTRY}$trk_15 " ;; 3) echo " ${A_TITLE}t16: ${A_ENTRY}$trk_16 ${A_TITLE}t17: ${A_ENTRY}$trk_17 ${A_TITLE}t18: ${A_ENTRY}$trk_18 ${A_TITLE}t19: ${A_ENTRY}$trk_19 ${A_TITLE}t20: ${A_ENTRY}$trk_20 ${A_TITLE}t21: ${A_ENTRY}$trk_21 ${A_TITLE}t22: ${A_ENTRY}$trk_22 ${A_TITLE}t23: ${A_ENTRY}$trk_23 ${A_TITLE}t24: ${A_ENTRY}$trk_24 ${A_TITLE}t25: ${A_ENTRY}$trk_25 ${A_TITLE}t26: ${A_ENTRY}$trk_26 ${A_TITLE}t27: ${A_ENTRY}$trk_27 ${A_TITLE}t28: ${A_ENTRY}$trk_28 ${A_TITLE}t29: ${A_ENTRY}$trk_29 ${A_TITLE}t30: ${A_ENTRY}$trk_30 " ;; esac echo -n "${A_PROMPT}Command (1-7, t1-t30, +, -, a, d, c, q, s, ?): ${A_NORMAL}" return } help() { cls ${A_NORMAL} echo " 1-7 edit record info t1-t30 edit track + next page - previous page 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 [ "$trk_1" = "" ]; then if [ "$artist" != "" ]; then chk_first awk_string="$awk_string (\$1 ~ /$artist/)" fi if [ "$titel" != "" ]; then chk_first awk_string="$awk_string (\$2 ~ /$titel/)" fi if [ "$utg_ar" != "" ]; then chk_first awk_string="$awk_string (\$3 ~ /$utg_ar/)" fi if [ "$musiktyp" != "" ]; then chk_first awk_string="$awk_string (\$4 ~ /$musiktyp/)" fi if [ "$format" != "" ]; then chk_first awk_string="$awk_string (\$5 ~ /$format/)" fi if [ "$utlanad" != "" ]; then chk_first awk_string="$awk_string (\$6 ~ /$utlanad/)" fi if [ "$kommentar" != "" ]; then chk_first awk_string="$awk_string (\$7 ~ /$kommentar/)" fi else awk_string="$awk_string (\$8\"\t\"\$9\"\t\"\$10\"\t\"\ \$11\"\t\"\$12\"\t\"\$13\"\t\"\$14\"\t\"\$15\"\t\"\$16\"\t\"\$17\"\t\"\ \$18\"\t\"\$19\"\t\"\$20\"\t\"\$21\"\t\"\$22\"\t\"\$23\"\t\"\$24\"\t\"\ \$25\"\t\"\$26\"\t\"\$27\"\t\"\$28\"\t\"\$29\"\t\"\$30 ~ /$trk_1/)" fi awk_string="$awk_string {printf " awk_string="${awk_string}\"Artist: %s\n" awk_string="${awk_string}Titel: %s\n" awk_string="${awk_string}Utg-år: %s\n" awk_string="${awk_string}Musiktyp: %s\n" awk_string="${awk_string}Format: %s\n" awk_string="${awk_string}Utlånad: %s\n" awk_string="${awk_string}Kommentar: %s\n\n" for i in 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 \ 17 18 19 20 21 22 23 24 25 26 27 28 29 30; do awk_string="${awk_string}$i: %s\n" done awk_string="${awk_string}\n\n\", " awk_string="${awk_string} \$1, \$2, \$3, \$4, \$5, \$6, \$7, \$8, \ \$9, \$10, \$11, \$12, \$13, \$14, \$15, \$16, \$17, \$18, \$19, \$20, \ \$21, \$22, \$23, \$24, \$25, \$26, \$27, \$28, \$29, \$30, \$31, \$32, \ \$33, \$34, \$35, \$36, \$37}" cls ${A_NORMAL} awk "$awk_string" $datafile | less return } delete() { echo -n "${A_PROMPT}Really delete (y/n)? ${A_NORMAL}" read r if [ "$r" != "y" ]; then return; fi first=1 awk_string="BEGIN {FS = \"\t\"}; ! (" if [ "$artist" != "" ]; then chk_first awk_string="$awk_string (\$1 ~ /$artist/)" fi if [ "$titel" != "" ]; then chk_first awk_string="$awk_string (\$2 ~ /$titel/)" fi if [ "$utg_ar" != "" ]; then chk_first awk_string="$awk_string (\$3 ~ /$utg_ar/)" fi if [ "$musiktyp" != "" ]; then chk_first awk_string="$awk_string (\$4 ~ /$musiktyp/)" fi if [ "$format" != "" ]; then chk_first awk_string="$awk_string (\$5 ~ /$format/)" fi if [ "$utlanad" != "" ]; then chk_first awk_string="$awk_string (\$6 ~ /$utlanad/)" fi if [ "$kommentar" != "" ]; then chk_first awk_string="$awk_string (\$7 ~ /$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 -t " " -k 1,1 -k 3,3 -o $datafile $datafile } ######################################################################### ######################################################################### r="" display_page=1 datafile=~/datafiles/skivor.tab init_attr draw_screen while read r; do case $r in 1) echo -n "${A_PROMPT}Artist: ${A_NORMAL}" read artist ;; 2) echo -n "${A_PROMPT}Titel: ${A_NORMAL}" read titel ;; 3) echo -n "${A_PROMPT}Utg-år: ${A_NORMAL}" read utg_ar ;; 4) echo -n "${A_PROMPT}Musiktyp: ${A_NORMAL}" read musiktyp ;; 5) echo -n "${A_PROMPT}Format: ${A_NORMAL}" read format ;; 6) echo -n "${A_PROMPT}Utlånad: ${A_NORMAL}" read utlanad ;; 7) echo -n "${A_PROMPT}Kommentar: ${A_NORMAL}" read kommentar ;; t[1-9] | t[1-3][0-9]) trk=${r#"t"} if [ $trk -gt 30 ]; then echo "${A_PROMPT}Invalid track number.${A_NORMAL}" sleep 2 else echo -n "${A_PROMPT}Track $trk: ${A_NORMAL}" read trk_$trk fi ;; +) if [ $display_page -ne 3 ]; then display_page=$[$display_page + 1] fi ;; -) if [ $display_page -ne 1 ]; then display_page=$[$display_page - 1] fi ;; a) echo "$artist $titel $utg_ar $musiktyp $format \ $utlanad $kommentar $trk_1 $trk_2 $trk_3 $trk_4 $trk_5 \ $trk_6 $trk_7 $trk_8 $trk_9 $trk_10 $trk_11 $trk_12 $trk_13 $trk_14 \ $trk_15 $trk_16 $trk_17 $trk_18 $trk_19 $trk_20 $trk_21 $trk_22 $trk_23 \ $trk_24 $trk_25 $trk_26 $trk_27 $trk_28 $trk_29 $trk_30" >> $datafile clear_all_fields ;; d) delete ;; c) clear_all_fields ;; q) query ;; s) do_sort ;; \?) help ;; esac draw_screen done cls ${A_NONE} .