Posted on 18th Sep 2020
#!/bin/bash E='echo -e';e='echo -en';trap "R;exit" 2 ESC=$( $e "e") TPUT(){ $e "e[${1};${2}H";} CLEAR(){ $e "ec";} CIVIS(){ $e "e[?25l";} DRAW(){ $e "e%@e(0";} WRITE(){ $e "e(B";} MARK(){ $e "e[7m";} UNMARK(){ $e "e[27m";} R(){ CLEAR ;stty sane;$e "ece[37;44me[J";}; HEAD(){ DRAW for each in $(seq 1 13);do $E " x x" done WRITE;MARK;TPUT 1 5 $E "BASH SELECTION MENU ";UNMARK;} i=0; CLEAR; CIVIS;NULL=/dev/null FOOT(){ MARK;TPUT 13 5 printf "ENTER - SELECT,NEXT ";UNMARK;} ARROW(){ read -s -n3 key 2>/dev/null >&2 if [[ $key = $ESC[A ]];then echo up;fi if [[ $key = $ESC[B ]];then echo dn;fi;} M0(){ TPUT 4 20; $e "Login Info";} M1(){ TPUT 5 20; $e "Network";} M2(){ TPUT 6 20; $e "Disk";} M3(){ TPUT 7 20; $e "Routing";} M4(){ TPUT 8 20; $e "Time";} M5(){ TPUT 9 20; $e "ABOUT";} M6(){ TPUT 10 20; $e "EXIT";} LM=6 MENU(){ for each in $(seq 0 $LM);do M${each};done;} POS(){ if [[ $cur == up ]];then ((i--));fi if [[ $cur == dn ]];then ((i++));fi if [[ $i -lt 0 ]];then i=$LM;fi if [[ $i -gt $LM ]];then i=0;fi;} REFRESH(){ after=$((i+1)); before=$((i-1)) if [[ $before -lt 0 ]];then before=$LM;fi if [[ $after -gt $LM ]];then after=0;fi if [[ $j -lt $i ]];then UNMARK;M$before;else UNMARK;M$after;fi if [[ $after -eq 0 ]] || [ $before -eq $LM ];then UNMARK;M$before; M$after;fi;j=$i;UNMARK;M$before;M$after;} INIT(){ R;HEAD;FOOT;MENU;} SC(){ REFRESH;MARK;$S;$b;cur=`ARROW`;} ES(){ MARK;$e "ENTER = main menu ";$b;read;INIT;};INIT while [[ "$0" != " " ]]; do case $i in 0) S=M0;SC;if [[ $cur == "" ]];then R;$e "n$(w )n";ES;fi;; 1) S=M1;SC;if [[ $cur == "" ]];then R;$e "n$(ip a )n";ES;fi;; 2) S=M2;SC;if [[ $cur == "" ]];then R;$e "n$(df -h )n";ES;fi;; 3) S=M3;SC;if [[ $cur == "" ]];then R;$e "n$(ip route )n";ES;fi;; 4) S=M4;SC;if [[ $cur == "" ]];then R;$e "n$(date )n";ES;fi;; 5) S=M5;SC;if [[ $cur == "" ]];then R;$e "n$($e by dan langas )n";ES;fi;; 6) S=M6;SC;if [[ $cur == "" ]];then R;exit 0;fi;; esac;POS;done