Take the 2-minute tour ×
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
else
    echo Differ
fi

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 ]
then
    ...
fi
share|improve this answer
1  
"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

Yes:

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

Your Answer

 
discard

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.