Sign up ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

I've been toying around with makefiles and bash scripts and I'm interested in this:

Is it possible to get a boolean value from a diff(or something similar) so that I can use it in a bash script to evaluate an if statement(so that the user will not see the actual diff executing)?

share|improve this question

3 Answers 3

If all you need is a byte-by-byte comparison, use cmp:

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

This avoids wasting time for diff's difference finding algorithm.

share|improve this answer

The manual is not clear on the return codes. However, diff should return always 0 when you compare two identical files.

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

if [ $? -eq 0 ]
share|improve this answer
"Exit status is 0 if inputs are the same, 1 if different, 2 if trouble." (GNU diffutils 3.2) - Seems fairly clear to me. –  grawity Feb 20 '12 at 23:02
diffutils 2.9.19-4065 completely lacks of a "return value" section –  ziu Feb 21 '12 at 11:50
Be careful ! This construction will fail if set -e is active and files differ. Better use if diff ... construction. The -e flag ("Exit immediate on error") is handy when all error cases are not yet handled or covered and the script is harmful. –  levif Sep 20 at 19:26


if diff "$file_a" "$file_b" &> /dev/null ; then
    echo "Files are the same"
    echo "Files differ"
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.