Для этого предусмотрена опция: -q
(или --quiet
). Он сообщает diff просто позволить коду выхода указывать, были ли файлы идентичны. Таким образом, вы можете сделать это:
if diff -q "$dest_file" "$source_file"; then
# files are identical
else
# files differ
fi
или если вы хотите поменять местами два пункта:
if ! diff -q "$dest_file" "$source_file"; then
# files differ
else
# files are identical
fi
Если вы действительно хотите сделать это по-своему (т. Е. Вам нужен вывод), вы должны сделать это:
if [ -n "$diff_output" -o ... ]; then
...
fi
-n
означает «проверить, не является ли следующая строка непустой. Вы также должны заключить ее в кавычки, чтобы, если она пустая, в тесте все еще была строка - вы получаете ошибку, потому что ваш тест оценивается как some_other_condition -o -o some_other_condition2
, что, как вы видите, не сработает.