Diff no script bash?

4

Estou brincando com makefiles e scripts do bash e estou interessado nisso:

É possível obter um valor booleano de um diff (ou algo semelhante) para que eu possa usá-lo em um script bash para avaliar uma instrução if (para que o usuário não veja a execução real do diff)?

    
por Gman 20.02.2012 / 23:44

3 respostas

10

Se tudo que você precisa é de uma comparação byte a byte, use cmp :

if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

Isso evita desperdício de tempo para o algoritmo de descoberta de diferenças de diff .

    
por 21.02.2012 / 00:01
2

Sim:

if diff "$file_a" "$file_b" &> /dev/null ; then
    echo "Files are the same"
else
    echo "Files differ"
fi
    
por 20.02.2012 / 23:53
2

O manual não está claro sobre os códigos de retorno. No entanto, o diff deve retornar sempre 0 quando você compara dois arquivos idênticos.

diff -a $file1 $file2 > /dev/null 2>&1

if [ $? -eq 0 ]
then
    ...
fi
    
por 20.02.2012 / 23:51