1

Here is the script that I wrote:

#!/bin/bash
directory1 = ~/path/to/directory/
directory2 = ~/path/to/directory2/
diff -r $directory1 $directory2 || echo "files are different"

And here is the output/error message that appears:

./compare.sh: line 2: directory1: command not found
./compare.sh: line 3: directory2: command not found
diff: missing operand after `-r'
diff: Try `diff --help' for more information.
files are different

I know that there is a problem in a way that I defined directory1 and directory2, but I don't exactly know what is wrong. Any help would be appreciated. Thanks!

1 Answers1

1

Spaces are used as delimiters when assigning variables in bash; you should remove them, otherwise your variables don't exist (i.e. are empty) so the line

directory1 = ~/path/to/directory/

actually means "call program directory1 with arguments = and ~/path/to/directory, hence the " command not found".

Similarly, your call to

diff -r $directory1 $directory

is equivalent to

diff -r

which is indeed missing parameters.

You might also want to quote path parameters to correctly handle spaces:

#!/bin/bash
directory1=~/path/to/directory/
directory2=~/path/to/directory2/
diff -r "$directory1" "$directory2" || echo "files are different"
Matthieu
  • 2,736
  • 4
  • 57
  • 87