Precisa de um comando para exibir um eco “success” [closed]

0
diff -q file_1 File_2 || echo "success" && diff -q file_3 File_4 || echo "success" 

usou este comando, mas esta não é a lógica apropriada que eu precisei, tenho que editar de alguma forma.

Aqui file_1 File_2 são diferentes e file_3 File_4 são diferentes, e echo será executado duas vezes, que deve ser executado apenas uma vez e também se o arquivo file_1 File_2 ou se file_3 File_4 for diferente, então também echo "success" deve executar apenas uma vez.

    
por Jonny 22.08.2016 / 07:38

1 resposta

2

Se você insistir nas avaliações de curto-circuito, use o agrupamento de comandos {} :

{ diff -q f1 f2 && diff -q f3 f4 ;} && echo 'Matched' || echo 'Different'

Uma subshell () também:

( diff -q f1 f2 && diff -q f3 f4 ) && echo 'Matched' || echo 'Different'

Se você não quiser a saída de diff :

{ diff -q f1 f2 && diff -q f3 f4 ;} >/dev/null && echo 'Matched' || echo 'Different'

( diff -q f1 f2 && diff -q f3 f4 ) >/dev/null && echo 'Matched' || echo 'Different'

Você seria muito melhor colocar isso em if constructs para tornar isso mais claro, isso permitirá que você identifique arquivos facilmente:

if diff -q f1 f2 >/dev/null; then
    if diff -q f3 f4 >/dev/null; then
        echo 'All Matched'
    else
        echo 'f3 and f4 are Different'
    fi
else
    echo 'f1 and f2 Different'
fi
    
por 22.08.2016 / 08:18