4

Я играл с make-файлами и скриптами bash, и мне интересно это:

Можно ли получить логическое значение из diff(или чего-то подобного), чтобы я мог использовать его в скрипте bash для оценки оператора if (чтобы пользователь не видел фактического выполнения diff)?

3 ответа3

10

Если вам нужно только побайтное сравнение, используйте cmp:

if cmp -s "$a" "$b"; then
    echo Same
else
    echo Differ
fi

Это позволяет избежать потерь времени для нахождения алгоритма разностных diff «s.

2

Руководство не ясно о кодах возврата. Однако diff всегда должно возвращать 0, когда вы сравниваете два одинаковых файла.

diff -a $file1 $file2 > /dev/null 2>&1

if [ $? -eq 0 ]
then
    ...
fi
2

Да:

if diff "$file_a" "$file_b" &> /dev/null ; then
    echo "Files are the same"
else
    echo "Files differ"
fi

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