Почему оператор равенства не работает, если он не окружен пробелом?

Я попробовал следующий сценарий

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

Он дал мне Equal . Хотя он должен был напечатать Не равно

Только когда я вставил пробел вокруг = , он работал как задумано

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

и напечатал Не равно

Почему? Почему "$ var1" = "$ var2" не то же самое, что "$ var1" = "$ var2" ?

Более того, когда я написал if ["$ var1" = "$ var2"] , он дал

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

Что это значит? Почему ожидаемый унарный оператор?

34
задан codeforester 16 August 2018 в 02:32
поделиться