Você pode usar o status de saída de diff
e head
dentro da substituição do processo:
[kbrandt@localhost ~]$ echo arf > foo
[kbrandt@localhost ~]$ echo arf > foo1
[kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1)
[kbrandt@localhost ~]$ echo $?
0
[kbrandt@localhost ~]$ echo foo > foo1
[kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1)
1c1
< arf
---
> foo
[kbrandt@localhost ~]$ echo $?
1
[kbrandt@localhost ~]$
O Diff compara os arquivos, se o status de saída for zero, do que os arquivos correspondem. Diferente de zero significa que eles não corresponderam ou houve um erro ao executar o diff, o que parece improvável. $?
é uma variável de shell que possui o status de saída do comando anterior. Você pode redirecionar a saída do diff adicionando > /dev/null
ao final do comando diff se não quiser vê-lo na tela:
[kbrandt@localhost ~]$ diff <(head -n1 foo) <(head -n1 foo1) > /dev/null
[kbrandt@localhost ~]$ echo $?
1