Bash script: always show menu after loop execution

bash, linux, loops, menu, unix

Solution

Make it beautiful and userfriendly ;-)

#!/bin/bash

while :
do
    clear
    cat<<EOF
    ==============================
    Menusystem experiment
    ------------------------------
    Please enter your choice:

    Option (1)
    Option (2)
    Option (3)
           (Q)uit
    ------------------------------
EOF
    read -n1 -s
    case "$REPLY" in
    "1")  echo "you chose choice 1" ;;
    "2")  echo "you chose choice 2" ;;
    "3")  echo "you chose choice 3" ;;
    "Q")  exit                      ;;
    "q")  echo "case sensitive!!"   ;; 
     * )  echo "invalid option"     ;;
    esac
    sleep 1
done

Replace the echos in this example with function calls or calls to other scripts.

Problem

I'm using a bash script menu like this: ``` #!/bin/bash PS3='Please enter your choice: ' options=("Option 1" "Option 2" "Option3" "Quit") select opt in "${options[@]}" do case $opt in "Option 1") echo "you chose choice 1" ;; "Option 2") echo "you chose choice 2" ;; "Option 3") echo "you chose choice 3" ;; "Quit") break ;; *) echo invalid option;; esac done ``` After each menu selection I just get prompted with ``` Please enter your choice: ``` How do I always show the menu after each option has finished execution? I've done some looking around and I think I can do some kind of while loop, but I haven't been able to get anything working.

Original source