Criando lista de menus e executando a tarefa

3

Recebi a Tarefa para criar um menu no Linux, mas parece que não está saindo muito bem. Quando seleciono algo que desejo executar essa tarefa, volto ao menu principal quando termino.

#!/bin/bash

PS3='What do you want to do day: '
options=("Create Group" "Delete Group" "Create User 3" "Delete User" "Quit")
select opt in "${options[@]}"
do
    case $opt in
        "Create Group")
            echo "You chose Create Group 1"
            ;;
        "Delete Group")
            echo "You chose to Delete Group"
            ;;
        "Create User")
            echo "You chose to Create User"
            ;;
        "Delete User")
            echo "You choose to Delete User"
            ;;
        "Quit")
            break
            ;;
        *) echo invalid option;;
    esac
done
    
por Krup 17.07.2014 / 02:21

2 respostas

1

você pode fazer isso usando enquanto está com uma condição verdadeira permanente:

while [ 1 -eq 1 ]  # or while [ true ] ( as glenn said)
do
 select opt in "${options[@]}"
 do
 case $opt in
     "Create Group")
         echo "You chose Create Group 1"
         ;;
     "Delete Group")
         echo "You chose to Delete Group"
         ;;
     "Create User")
         echo "You chose to Create User"
         ;;
     "Delete User")
         echo "You choose to Delete User"
         ;;
     "Quit")
         break
         ;;
     *) echo invalid option;;
  esac
 done
done
    
por 17.07.2014 / 02:58
1

Suponho que você queira exibir o menu a cada vez. Tente isto:

quit=false
until $quit; do
    select opt in "${options[@]}"; do
        case $opt in
            "Create Group")
                echo "You chose Create Group 1"
                break
                ;;
            "Delete Group")
                echo "You chose to Delete Group"
                break
                ;;
            "Create User")
                echo "You chose to Create User"
                break
                ;;
            "Delete User")
                echo "You choose to Delete User"
                break
                ;;
            "Quit")
                quit=true
                break
                ;;
            *) echo invalid option;;
        esac
    done
done
    
por 17.07.2014 / 03:07