shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: Construção de CASE Complexa


From: Christian Lyra
Subject: Re: [shell-script] Re: Construção de CASE Complexa
Date: Mon, 11 Jul 2016 12:33:42 -0300

Caros,

Nossa... a thread cresceu alem do esperado! Logo quando eu vi pensei que o Rodrigo não tinha pensado em usar o shift para ler as opções, e a resposta logo em seguida do Itamar estava perfeita. Pronto é isso, "KISS".  Varios textões depois eu ainda estou tentando entender porque o Rodrigo quer fazer algo complicado a ponto de impedir que o usuário altere a ordem das opções! Que diferença faz "-p projeto -s subprojeto" de "-s subprojeto -p projeto"??  Salvo as situações onde não se usam "opções" de maneira explicita como por exemplo num comando cp, onde sempre os primeiros parametros são a origem e o último o destino, o padrão é aceitar as opções em qualquer ordem!

Assim tb como indicado pelo Itamar, vc cuida depois da lógica das opções, ou seja, o usuário não pode usar a opção de subprojeto, sem indicar tb a opção de projeto. Algo do tipo:

PROJETO=""
SUBPROJETO=""
DEBUG=0

# le opcoes
while test -n "$1"
do
  case $1 in
       -p|--projeto) shift
                           PROJETO="$1"
                           ;;
       -s|--subprojeto) shift
                                SUBPROJETO="$1"
                           ;;
        -d|--debug) DEBUG=1
                           ;;
        *) echo "hein?"
   esac
   shift
done

#verifica opcoes
if [ "$PROJETO" == "" ]
then
    echo "Por favor, informe o projeto. "
    exit
fi

Outra opção é usar o getopt, mas eu pessoalmente acho ele meio chato...


Quanto a questão da ordem de aplicação dos parâmetros, por questão da
ideia de superconjunto, e de forçar o usuário a pensar na execução de
suas tarefas na ordem "correta", eles não poderiam ser alterados (de
início).

Assim, se alguém quer mexer num arquivo de um subprojeto ele precisa
primeiro informar o PROJETO, depois o SUBPROJETO para depois indicar o
ARQUIVO que ele quer mexer... nessa ordem. Assim sendo, não queria
permitir na linha de comando que o usuário alterasse essa ordem a seu
"bel prazer" por questão de lógica também da estrutura de arquivos e
diretórios que o programa constrói. Mas, novamente, posso estar enganado
quanto a isso.

Mas se você afirma que as ideias anteriormente postadas por você, Tiago
e Julio são as melhores opções, vou continuar pensando nelas e tentar
elaborar um código exemplo para apreciação da lista.

E, não se preocupe pois eu não sou de me iludir. Prefiro sempre a
verdade, pois não se pode ficar feliz com mentiras, somente para agradar
ao próximo (i. é: essa situação é ruim tanto para quem tenta agradar
dessa forma quanto para quem aceita esse tipo de agradecimento) :P

Um abraço.

Rodrigo

>




--
Christian Lyra
PoP-PR/RNP
(41) 3361-3343

reply via email to

[Prev in Thread] Current Thread [Next in Thread]