[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Construção de CASE Complexa
From: |
code |
Subject: |
Construção de CASE Complexa |
Date: |
08 Jul 2016 22:04:08 -0700 |
Oi Pessoal,
Boa madrugada! Antes de mais nada, peço desculpas antecipadas caso a lista receba mais de uma mensagem minha sobre o mesmo tema, pois me parece que não está funcionando o envio de mensagens diretamente de minha conta de email e estou re-enviando essa cópia através do painel de controle do Yahoo Groups. Alguém saberia de algum problema, ou bloqueio?
DÚVIDA SOBRE CONDICIONAL DO TIPO CASE
Gostaria de tirar uma dúvida: é possível criar um tipo condicional case
com opções AND e OR misturadas em cada opção de padrão a ser analisado?
Exemplos: eu sei que e possível criar um tipo condicional case básico
como:
case $1 in
-p)
echo "Opção 1"
;;
-s)
echo "Opção 2"
;;
-f)
echo "Opção 3"
;;
*)
echo "Modo de uso: nome_do_programa {-spf}"
esac
Neste caso ele analisa o uso do executável com apenas uma opção:
$ nome_do_programa -p
Opção 1
$ nome_do_programa -s
Opção 2
$ nome_do_programa -f
Opção 3
Eu sei que é possível expandir o uso das opções, de cada padrão a ser
analisado, com o OR:
case $1 in
-p|--project)
echo "Opção 1"
;;
-s|--subproject)
echo "Opção 2"
;;
-f|--file)
echo "Opção 3"
;;
*)
echo "Modo de uso: nome_do_programa {-spf}"
esac
O que permite ele funcionar para os seguintes casos:
$ nome_do_programa -p
Opção 1
$ nome_do_programa --project
Opção 1
$ nome_do_programa -s
Opção 2
$ nome_do_programa --subproject
Opção 2
$ nome_do_programa -f
Opção 3
$ nome_do_programa --file
Opção 3
E também sei que é possível utilizar AND para evitar (ao máximo) o uso
de condicionais do tipo case aninhadas, como:
case $1:$2:$3 in
-p:-s:-f)
echo "Opção 1, 2 e 3 simultâneas"
;;
*)
echo "Modo de uso: nome_do_programa {-s -p -f}"
esac
que responderia da seguinte maneira:
$ nome_do_programa -p -s -f
Opção 1, 2 e 3 simultâneas
Mas não descobri como fazer (se é realmente possível) o uso do AND e do
OR simultâneo em cada opção de padrão a ser analisado pelo tipo
condicional case. É possível criar uma opção de padrão que misture
ambas? Algo como (eu sei que não funciona):
-p|--project:-s|--subproject:-f|--file)
que permitisse gerar resultados como:
$ nome_do_programa -p -s -f
Opção 1, 2 e 3 simultâneas
$ nome_do_programa --project -s -f
Opção 1, 2 e 3 simultâneas
$ nome_do_programa -p --subproject -f
Opção 1, 2 e 3 simultâneas
$ nome_do_programa -p -s -file
Opção 1, 2 e 3 simultâneas
$ nome_do_programa --project --subproject -f
Opção 1, 2 e 3 simultâneas
$ nome_do_programa --project -s --file
Opção 1, 2 e 3 simultâneas
$ nome_do_programa -p --subproject --file
Opção 1, 2 e 3 simultâneas
$ nome_do_programa --project --subproject --file
Opção 1, 2 e 3 simultâneas
Estou tentando ao máximo obter opções de construção de programas em
shell com o uso do tipo condicional case para não precisar utilizar
(muito) a sua forma aninhada e tentar manter o código o mais "simples"
possível.
Também acredito que posso estar redondamente enganado, e essa linha de
raciocínio pode vir a complicar meu projeto mais à frente. Por isso
qualquer solução alternativa que mude minha linha de desenvolvimento e
torne o programa melhor (e mais legível) também é muito bem vinda.
Desde já agradeço a ajuda.
Saudações.
Rodrigo Amorim
- Construção de CASE Complexa,
code <=
- Re: [shell-script] Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/09
- Re: Construção de CASE Complexa, itamarnet, 2016/07/09
- Re: Construção de CASE Complexa, itamarnet, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, itamarnet, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, itamarnet, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/09
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/10
- Re: [shell-script] Re: Construção de CASE Complexa, itamarnet, 2016/07/11