[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Construção de CASE Complexa
From: |
Rodrigo Amorim Ferreira | CODECOMMUNITY |
Subject: |
Re: [shell-script] Construção de CASE Complexa |
Date: |
Sat, 09 Jul 2016 14:02:02 -0300 |
Oi Julio,
Interessantíssimo :) Acredito que vou conseguir criar algo que envolva
sua sugestão com as do Tiago e do Itamar. Assim que tiver avançado no
projeto (i. é: pelo menos no script principal do programa que envolve o
uso "massivo" do case) volto a repassar os avanços aqui na lista.
Agradeço a ajuda.
Um abraço.
Rodrigo
On Sat, 2016-07-09 at 13:18 -0300, 'Julio C. Neves'
address@hidden [shell-script] wrote:
>
> Fala Rodrigo,
> a partir do bash 4.0, além do terminador ;; tb temos mais dois:
>
>
> ;;& sai do bloco, mas não sai do case, testa as outras condições;
> ;& sai do bloco, mas não sai do case, executa obrigatoriamente a
> próxima condição.
>
>
> function caractere
> {
> case $1 in
> [[:alpha:]]) echo -n "Letra " ;;&
> [[:lower:]]) echo minúscula ;;
> [[:upper:]]) echo maiúscula ;;
> *) echo não é letra
> esac
> }
>
>
> $ caractere a
> Letra minúscula
> $ caractere X
> Letra maiúscula
> $ caractere 1
> não é letra
>
>
> Creio que assim fica mais fácil, já que vc consegue fazer o or, usando
> o terminador ;;& e então basta fazer o and.
>
> Abcs,
> Julio
> @juliobash
>
> Próximos cursos de Shell
> Cidade Local Período
>
>
> São Paulo 4Linux 25
> -29/07
>
> Dou treinamento de Shell em qualquer cidade.
>
> Para mais detalhes, me mande um e-mail.
> >
>
>
> Em 9 de julho de 2016 02:04, address@hidden [shell-script]
> <address@hidden> escreveu:
>
> 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
>
>
>
>
>
>
>
- Re: [shell-script] Re: Construção de CASE Complexa, (continued)
- Re: [shell-script] Re: Construção de CASE Complexa, phfbettega, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/11
- RES: [shell-script] Re: Construção de CASE Complexa, Igor, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Julio C. Neves, 2016/07/11
- Re: [shell-script] Re: Construção de CASE Complexa, Rodrigo Amorim Ferreira | CODECOMMUNITY, 2016/07/11
Re: [shell-script] Construção de CASE Complexa, Tiago Peczenyj, 2016/07/09
Re: [shell-script] Construção de CASE Complexa, Julio C. Neves, 2016/07/09
- Re: [shell-script] Construção de CASE Complexa,
Rodrigo Amorim Ferreira | CODECOMMUNITY <=