Из моего diff(1)
: «Состояние выхода равно 0, если входные данные одинаковы, 1, если отличаются, 2, если возникли проблемы.»
Поскольку ненулевые возвраты являются обычным способом сообщения об ошибках в сценариях оболочки, tcl и diff не согласны со значением возвращаемого результата.Вероятно, для написания сценариев оболочки очень удобно знать, отличаются ли два файла от возвращаемого значения, но я не вижу какого-либо механизма, который бы отключал это на странице руководства.(Я бы предпочел использовать cmp -q
только для того, чтобы узнать, отличаются ли два файла, не знаю, почему разные люди приняли решение, которое они приняли.)
Но вы можете забить это на работу, добавив ; true
к вашей команде.
Более хитрым способом заставить его работать будет ошибка только при коде выхода 2
: diff foo bar ; if [ $? -ne 2 ]; then true ; else false; fi;
Проверьте результаты с разными именами файлов и echo $?
после каждого теста, чтобы увидеть, какие из них возвращают 0
(из true
), а какие возвращают 1
(из false
).