It seems that these two operators are pretty much the same - is there a difference? When should I use = and when ==?
=
==
There's a subtle difference with regards to POSIX. Excerpt from the Bash reference:
string1 == string2 True if the strings are equal. = may be used in place of == for strict POSIX compliance.
string1 == string2