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 -eor 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
Post a Comment