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
.
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)?
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
.
Sim:
if diff "$file_a" "$file_b" &> /dev/null ; then echo "Files are the same" else echo "Files differ" fi
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