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

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

Re: [shell-script] Controle de fluxo baseado no valor de retorno de dois


From: Guilherme Gall
Subject: Re: [shell-script] Controle de fluxo baseado no valor de retorno de dois comandos
Date: Fri, 27 Jun 2008 11:00:25 -0300

Olá Tiago, obrigado pela resposta. Funcionou da forma que você
sugeriu, já até mudei o script.

Revendo minhas tentativas, vi coisas como

if [[ comando1 || comando2 ]]; then
   echo "comando1 OR comando2"
fi

E o resultado de [[ comando1 || comando2 ]] era sempre 0. Acho que no
final das contas estou fazendo confusão com programas que escrevo em
outras linguagens onde

if ( funcaoBooleana1() && funcaoBooleana2() )

é uma construção comum.

Usei a construção [[ ... ]] porque em algum lugar li que eu poderia
usá-la para testar expressões usando && e || e que ela me retornaria 0
ou 1.

Aparentemente, tive problemas porque usei chamadas a comandos para
compor minha expressão e o bash não aceita isso. Correto, ou cometi
algum equívoco?

Apesar de já ter resolvido meu problema gostaria de saber o que está
acontecendo.

[]'s

Guilherme Magalhães Gall


2008/6/26 Tiago Barcellos Peczenyj <address@hidden>:
> tenta assim:
>
> if cmd1 && cmd2 ; then
>   echo "cmd1 AND cmd2"
> fi
>
> if cmd1 || cmd2 ; then
>   echo "cmd1 OR cmd2"
> fi
>
>
> 2008/6/26 Guilherme Gall <address@hidden>:
>> Prezados(as),
>>
>> Tenho um script onde decido entre fazer uma uma tarefa ou outra
>> baseado no valor de retorno de dois comandos distintos. Sempre uso
>>
>> if <comando>; then
>> <comandos se valor de retorno 0>
>> else
>> <comandos se valor de retorno diferente de 0>
>> fi
>>
>> quando preciso fazer algo baseado no retorno de um comando só, mas em
>> meu caso preciso fazer o controle de fluxo baseado no exit code de
>> dois comandos diferentes. Eu precisaria de uma coisa mais ou menos
>> assim:
>>
>> if <comando1> AND <comando2>; then
>> <comandos se o retorno de comando 1 e comando 2 for 0>
>> else
>> <comandos se o retorno de um comando for 0 e o outro diferente de
>> 0, ou se ambos forem diferentes de 0>
>> fi
>>
>> Resumindo, gostaria de poder fazer operações de AND, OR e NOT com os
>> exit codes de dois comandos diferentes para tomar uma decisão se ambos
>> retornarem 0 por exemplo.
>>
>> Tentei fazer isso de diversas formas sem sucesso e minhas pesquisas
>> sobre isso na web foram infrutíferas, então peço ajuda a vocês.
>>
>> A solução que arranjei foi executar o primeiro comando, guardar o
>> valor $? em uma variável, executar o segundo comando, guardar o valor
>> $? em uma segunda variável e finalmente, fazer algo como
>>
>> if [ $RET1 = 0 -a $RET2 = 0 ]; then
>> <comandos>
>> else
>> <comandos>
>> fi
>>
>> Não sei se fui claro, se ficou alguma dúvida do que eu quero fazer é
>> só perguntar.
>>
>> Desde já agradeço,
>>
>> --
>> Guilherme Magalhães Gall
>>
>>
>
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> http://peczenyj.blogspot.com/
> "what does not kill us makes us stronger"
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>


reply via email to

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