Estou trabalhando em um menu multinível e quero implementar a capacidade de submenus e sub-submenus retornarem ao menu anterior ou irem diretamente de volta ao menu principal. Veja abaixo...
[Menu]
1 - Option 1
2 - Option 2
3 - Quit (exit command)
Please choose option:
#Under Option 1
1 - Sub-Option 1
2 - Sub-Option 2
3 - back to main menu
#Under Sub-Option 1
1 - Sub-sub Option 1
2 - Sub-sub Option 2
3 - back to Sub-option menu
4 - back to main menu
Meu código atual mantém cada menu em uma função separada. Incluí meu menu Sub-Option abaixo...
suite_menu() {
show_suite_menu
read -p "Pick Number> " choice
case $choice in
1) echo "1 selected."
fullsuite_menu ;;
2) echo "2 selected."
fullsuite_menu ;;
3) echo "3 selected."
fullsuite_menu ;;
0) break;;
*) echo "Invalid choice, please try again";;
esac
}
Como eu poderia codificar meu sub-sub-menu de opções para ter a opção 3 indo para o menu acima, e a opção 0 indo para o menu principal? Obrigado antecipadamente <3
Os pensamentos iniciais foram em direção à manutenção de algum tipo de pilha de chamadas para o menu/funções, com códigos de retorno (ou mais provavelmente configurações de variáveis) determinando como o menu/função 'pai' deve funcionar ao retornar da chamada do menu/função filho. E eu provavelmente olharia para algo nesse sentido se houvesse necessidade de manter algum tipo de conjunto de dados recursivos (por exemplo, anexar aos dados ao ir 'para baixo', remover dados ao ir 'para cima'), mas não há nada na pergunta do OP indicando esse nível de manipulação de dados, então...
Uma abordagem simplista seria fazer com que cada opção/ação do menu designasse o comando 'próximo' (por exemplo,
break
,<function_name>
) a ser chamado, com umwhile true
loop simples no nível superior executando o comando 'próximo'.Implementando menus de exemplo do OP com algum
bash
código detalhado, com ações/menus indefinidos implementados comoecho
chamadas simples:NOTAS:
select
, o uso de uma única função de menu 'genérica' que usa argumentos de entrada para acessar itens/ações de um menu específico (armazenados em matrizes), etc.while true
loop pai quanto à 'próxima' operaçãoFazendo um test drive:
A saída do exercício de todas as opções do menu:
Você escolheu uma resposta, mas esta é a minha solução.