Você também pode fazer isso:
./program < t1.input | diff t1.expected -
Eu tenho um programa que escreve para stdout . Existe uma maneira que eu possa redirecionar a saída para o comando Linux diff ou eu tenho que escrever a saída para um arquivo e depois comparar isso?
Por exemplo, eu tenho um monte de arquivos de entrada de teste para um programa e a saída esperada correspondente em outro conjunto de arquivos. E eu gostaria de fazer algo como ./program < t1.input | diff t1.expected
.
No bash:
diff t1.expected <(./program < t1.input)
Ou a maneira simples de usar o bash:
diff <(./program) <(cat t1.expected)
Costumo usar o caso mais geral
diff <(command1) <(command2)
em que os dois comandos podem ser semelhantes, exceto por ex. diferentes arquivos de entrada ou diferentes versões de um programa operando no mesmo arquivo. Também trabalha com gvimdiff.
Caso você queira diferenciar duas saídas de programas, o zsh é seu amigo:
$ diff =(program1 < input1) =(program2 < input2)
Tags pipe linux redirection