linux - Trying to validate PS3 input based on menu output for user validation -


if wanted validate null return user keyboard input if user hasn't selected option reprint menu how achieved? , if invalid choice made clear screen / reprint menu insure error message still visible? maybe capture return code part of exit , based on provide error?

the file alias_file.config consists of these values:

alias1 cluster1 alias2 cluster2 alias3 cluster3 quit 

script:

mapfile -t arr < "/var/alias_file.config"              select alias_select in "${arr[@]}"                         if [[ -z "$alias_select" ]]                             echo                 echo "invalid choice"                 echo              elif [[ $alias_select == "quit" ]]                             break             else                 echo                 echo "you selected: $alias_select"                 echo                  alias=$(echo "${alias_select}" | awk '{print $1}')                 cluster=$(echo "${alias_select}" | awk '{print $2}')                  echo "$alias"                 echo "$cluster"             fi             done 

as long have file (/var/alias_file.config), should able show menu anytime, have access values in arr through mapfile here quick attempt, advices:

  • use echo -e or event better (and recommended) printf
  • clear screen, can use vt100 escape code printf "\033c"
  • use bash string manipulation

updated script:

#!/bin/bash  mapfile -t arr< "/var/alias_file.config"  print_menu(){     (( i=0; i<${#arr[@]}; i++ ));           echo $i")" ${arr[$i]}     done }  printf "\033c"  select alias_select in "${arr[@]}" printf "\033c" if [[ -z "$alias_select" ]]     echo -e "\ninvalid choice\n"     print_menu elif [[ $alias_select == "quit" ]]     break else     echo -e "\nyou selected: $alias_select\n"     echo -e "${alias_select// *}\n${alias_select##* }" fi done 

Comments