3

У меня есть программа, которая пишет в стандартный вывод. Есть ли способ, которым я могу перенаправить вывод в команду Linux diff или мне нужно записать вывод в файл, а затем сравнить это?

Например, у меня есть куча тестовых входных файлов для программы и соответствующий ожидаемый результат в другом наборе файлов. И я хотел бы сделать что-то вроде ./program < t1.input | diff t1.expected .

4 ответа4

4

Вы также можете сделать это:

./program < t1.input | diff t1.expected -
4

В Баш:

diff t1.expected <(./program < t1.input)
3

Или простой способ использования bash:

diff <(./program) <(cat t1.expected)

Я часто использую более общий случай

diff <(command1) <(command2)

где две команды могут быть похожими, за исключением, например, разных входных файлов или разных версий программы, работающей с одним и тем же файлом. Также работает с gvimdiff.

1

Если вы хотите использовать два выхода программ, zsh - ваш друг:

$ diff =(program1 < input1) =(program2 < input2)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .