Pourquoi l'égalité à l'opérateur ne fonctionne pas s'il n'est pas entouré par l'espace?

J'ai essayé le script suivant

#!/bin/bash
var1="Test 1" 
var2="Test 2"
if [ "$var1"="$var2" ] 
  then 
    echo "Equal" 
  else 
    echo "Not equal"
fi

Il m'a donné Equal. Mais il faut avoir imprimé Not equal

Seulement quand j'ai inséré l'espace autour de = cela a fonctionné comme prévu

if [ "$var1" = "$var2" ] 

et imprimé Not equal

Pourquoi est-il si? Pourquoi "$var1"="$var2" est pas le même que "$var1" = "$var2"?

De plus, quand j'ai écrit if [ "$var1"= "$var2" ], il a donné

line 4: [: Test 1=: unary operator expected

Que veut-il dire? Comment se fait-ses attend opérateur unaire?