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 <[EMAIL PROTECTED]>: > 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 <[EMAIL PROTECTED]>: >> 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: [EMAIL PROTECTED] > --------------------------------------------------------------------- > 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 >
