Olá,

O uso do and && e do or || possui um detalhe importante, como
exemplificado na construção a seguir:

test 1 -eq 1 && {
    comando1
    comando2
    comando3
} || {
    comando4
    comando5
    comando6
}

Caso o "comando3" retorne o status de execução $? diferente de zero,
os comandos 4, 5 e 6 serão executados.

Assim o estrutura " } || {" incide sobre o último comando executado;
se o test tiver status 1, incide sobre o retorno do test, se o test
tiver status 0 incide sobre o comando3.

Para que esta estrutura funcione exatamente como um if/then/else, é
necessário adicionar o "true" ao final do primeiro bloco de comandos,
garantindo que o próximo bloco de comandos não seja executado:

test 1 -eq 1 && {
    comando1
    comando2
    comando3
    true
} || {
    comando4
    comando5
    comando6
}


Fica a dica. :)

-- 
Reinaldo Carvalho

Responder a