Alex Rivera | Logout

Bash: using the result of a diff in a if statement

Asked 2010-08-31T18:02:03.570
91

I am writing a simple Bash script to detect when a folder has been modified.

It is something very close to:

ls -lR $dir > a
ls -lR $dir > b

DIFF=$(diff a b) 
if [ $DIFF -ne 0 ] 
then
    echo "The directory was modified"

Unfortunately, the if statement prints an error: [: -ne: unary operator expected

I am not sure what is wrong with my script, would anyone please be able to help me?

Thank you very much!

Jary

Edit
Report

1 Answer

34

You are looking for the return value of diff and not the output of diff that you are using in your example code.

Try this:

diff a b
if [ $? -ne 0 ]; then
    echo "The directory was modified";
fi
answered 2010-08-31T18:05:05.340

Your Answer