Isso funciona:
if diff "./helloworld$x.out" "./output/helloworld$x.out" >/dev/null; then echo "Passed $x"; else echo "Failed $x"; fi
Se você usar uma variável em vez de echo
, poderá descartar else
branche: defina a variável como false antes de if
e salve 2 linhas de código.
Se você quiser realmente colocar o resultado em uma variável use:
some_var="$(diff "./helloworld$x.out" "./output/helloworld$x.out")"
Incluindo meu teste para ver se realmente funciona:
rinzwind@discworld:~$ touch 1 rinzwind@discworld:~$ touch 2 rinzwind@discworld:~$ more test if diff 1 2 >/dev/null; then echo "Passed $x"; else echo "Failed $x"; fi rinzwind@discworld:~$ ./test Passed rinzwind@discworld:~$ vi 2 rinzwind@discworld:~$ more 2 2 rinzwind@discworld:~$ ./test Failed
Na >/dev/null
part: >/dev/null 2>&1
enviará a saída para >/dev/null
e 2>&1
enviará erros padrão para o mesmo arquivo ( &1
significa 'use primeiro parâmetro') na frente deste comando (assim ele também usa /dev/null
).
sidenote: sdiff
mostrará uma listagem diff
lado-a-lado:
sdiff 1 2 1 1 2 2 3 3 4 4 5 5 7 7 > 8 9 9 10 10