Você pode usar o operador -s
do teste para verificar se o arquivo está vazio e cmp
é geralmente a maneira mais simples de verificar a igualdade de arquivos (observe que você pode usar um comando diretamente em uma instrução if
como uma alternativa mais simples para comparar seu status de saída com 0). Eu estou mantendo o bit onde você classifica os dois arquivos antes de compará-los; se isso não for necessário, basta usar os dois arquivos diretamente como argumentos para cmp
.
if [ -s ./foo1 ] && ! cmp -q <(sort ./foo1) <(sort ./foo2); then
...
Você pode ler o acima como: "if ./foo1 não está vazio ( [ -s ... ]
) AND ( &&
) os formulários classificados de ./foo1 e ./foo2 NÃO são ( !
) iguais ( cmp
) ".