C Shell без разницы печатает сообщение об успешном завершении

Я хотел бы проверить, как распечатать сообщение об успехе, если в двух файлах нет разницы.

Пример

diff file1 file2

csh
person JCX    schedule 13.06.2012    source источник


Ответы (3)


Среда оболочки $? выдает результат последней команды. Будет 0, если файлы совпадают, не 0, если они разные.

diff file1 file2
if ($? == 0) then
    echo "Same"
else
    echo "Different"
endif

Если вы делаете это, вы можете рассмотреть diff -q, который просто вернет код результата и не выведет различия на стандартный вывод.

person John3136    schedule 13.06.2012
comment
Благодарю. что, если я хочу сохранить результат diff в переменной? diff файл1 файл2 › j - person JCX; 13.06.2012
comment
diff файл1 файл2 › файл_результатов (обратите внимание, нет -q) будет работать. Вы все еще можете проверить результат с помощью if($? == 0) - person John3136; 13.06.2012
comment
В зависимости от того, сколько лет вашему csh/tcsh, вы можете использовать $status вместо $? - person swdev; 21.08.2013

Код выхода diff равен нулю, если файлы одинаковые, единице, если они разные, и 2, если есть ошибка. Используйте $? для проверки кода выхода последней команды или используйте команду непосредственно в условии if.

person Some programmer dude    schedule 13.06.2012

Вы также можете проверить длину вывода с помощью wc

person Pierre Arlaud    schedule 13.06.2012